JAVA,Swing中的窗口怎么添加背景图?在图片重绘时,不把图片上的组件覆盖掉?

如题所述

用JLabel作为背景,然后组件添加在JLabel上,就是把JLabel看作是跟JPanel同等级的容器,这样就没有你重绘时覆盖组件的问题了,给你个示例

package my.test.main;
import java.awt.BorderLayout;
public class First extends JDialog {
private final JPanel contentPanel = new JPanel();
private JTextField textField;
/**
* Launch the application.
*/
public static void main(String[] args) {
try {
First dialog = new First();
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Create the dialog.
*/
public First() {
setBounds(100, 100, 450, 300);
getContentPane().setLayout(new BorderLayout());
contentPanel.setLayout(new GridLayout(1, 1));
getContentPane().add(contentPanel, BorderLayout.CENTER);
JLabel bgLb = new JLabel();
bgLb.setIcon(new ImageIcon("bg.jpg"));
bgLb.setHorizontalAlignment(SwingConstants.CENTER);
contentPanel.add(bgLb);
bgLb.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 50));
textField = new JTextField();
bgLb.add(textField);
textField.setColumns(10);
}
}

追问

还要什么其它办法吗?

温馨提示:内容为网友见解,仅供参考
无其他回答

java中swing窗体美化(swing的控件美化)
JAVA,Swing中的窗口怎么添加背景图?在图片重绘时,不把图片上的组件覆盖...简单来说就是重写paint方法,然后调用画笔的drawImage这个方法。false);this.getLayeredPane().setLayout(null);this.getLayeredPane().add(backImage,newInteger(Integer.MIN_VALUE));backPanel.setLayout(newBorderLayout());这个...

Java swing 窗体如何设置背景图片?
backPanel.setLayout(new BorderLayout());这个是我程序里面复制出来的,效果就下面图一样。

Java Swing 怎么自定义界面背景图片
在java swing中需要为容器添加自定义图片或者背景图片。提供两种简单的解决方案,一种利用JPanel,另一种利用JLabel,代码如下:1、JPanel(源代码)package oo; import java.awt.Graphics; import java.awt.Image; import java.io.File; import javax.swing.ImageIcon; import javax.swing.JFram...

java界面的背景图片怎么加,如果把图片加在JLabel上填满面板那怎么样才...
- 加一个 JLabel,然后在 JLabel 上添加图片;- 直接重写 paint 方法,然后用 drawImage(Image src, int x, int y, int width, int height) 方法画上去。最大化的时候实际上是触发了窗口事件,添加窗口监听器,然后重写 windowResized() 方法,一旦窗口改变大小就重新计算尺寸,并调用 repaint ...

java swing中绘制的图片重绘的问题?
将图片资源文件加载放在构造函数里,只加载一次即可,避免重复加载。不要放在paintComponent函数里,因为每次窗口改动都会调用此函数,会造成资源重复加载问题。

JAVA swing怎样让按钮和标签随着窗口的放大而放大,排版不变
建议使用borderlayout 边界布局。非常好用。用边界布局套流布局,表布局就能做出很多界面了 简单的范例,你参考下 public class MyBorderLayout { public static void main(String[] args) { Frame f = new Frame("P03窗口"); f.setLayout(new BorderLayout(30, 5)); f.add(new Button("东...

请问java的JLabel上的图片如何刷新?
如果下面的方法都用完了,还是不行 background = new ImageIcon("D:\/\/ClientData\/\/result.jpg");resultLabel.setIcon(background);resultLabel.repaint();resultLabel.updateUI();resultLabel.setVisible(true);试一下这种方法:String path = "D:\/\/ClientData\/\/result.jpg";Icon icon;try { icon =...

双缓冲原理在awt和swing中实现消除闪烁的方法
首先我们来解答第一个问题 我们在屏幕上自绘图形或者是添加图片都是要通过所在画布的重绘来实现的 因此闪烁的出现必然与重绘机制有着一些关联 在awt中对于窗体画布的重绘其条用顺序是repaint() —>update()—>paint();我们来看看update()的源码 Java代码 \/** * Updates the container Th...

java swing中Graphic的drawString方法在同一位置绘制变化的数字,前后的...
楼上正解,之所以混在一起,是因为你没擦掉,0-0。擦掉的方法就同楼上所说,有两种:1. super.paintComponent(g),会调用组件的原始界面重绘一次,这样你上次绘制上去的文本就不在了,也就相当于擦除了;2. g.clearRect(x,y,w,h),这个就更直白了,就是擦除这个区域 ...

在JAVA窗口中,想要重绘一个部分,请问可以怎么实现?有几种方式?
{ protected void paintComponent(Graphics g){ \/\/drawOval方法画矩形的内切椭圆,但不填充,只画出一个边界 g.fillOval(0,0,getSize().width-1,getSize().height-1);g.drawImage(imageIcon.getImage(),0,0, getWidth(), getHeight(), null);}\/\/实现圆形的按钮的代码 };\/\/重绘JButton ...

相似回答