JFrame窗口的组成部分:。
- 最底层是RootPane,
- 上一层是LayeredPane,
- 再上面就是ContenePane,
- 最顶层就是GlassPane。
最 顶层的GlassPane默认是透明的;
ContentPane默认是一个JPanel,在JFrame上添加组件,往往是添加在ContentPane中的,
package test;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class BackgroundImage extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
//添加背景图片
public BackgroundImage(){
//标题
super("swing中JFrame设置背景图片");
//大小
setSize(500,400);
setLocation(200,50);
//图片的路径。(相对路径或绝对路径)
String path="D:/javapro/t4/src/test/126725481.jpg";
//背景图片
ImageIcon background=new ImageIcon(path);
//把背景图片放在在一个标签里面
JLabel label=new JLabel(background);
//标签的大小位置设置
label.setBounds(0, 0, this.getWidth(),this.getHeight());
//把内容窗格转化为JPanel,否则不能用方法setOpaque()来使内容窗格透明,要强制转化
JPanel imagePanel=(JPanel)this.getContentPane();
imagePanel.setOpaque(false);
//把背景图片添加到最底层作为背景
this.getLayeredPane().add(label,new Integer(Integer.MIN_VALUE));
JLabel label2=new JLabel("adhfasdf");
JButton button=new JButton("按钮测试");
JPanel panel=new JPanel();
JPanel pane2=new JPanel();
JButton button2=new JButton("按钮测试2");
panel.setOpaque(false); //设置panel为透明的,否则会挡住后面的背景图片
pane2.setOpaque(false); //设置panel为透明的,否则会挡住后面的背景图片
label2.setForeground(Color.green);
button.setBackground(Color.RED);
panel.add(label2);
pane2.add(button);
panel.add(button2);
this.add(panel,BorderLayout.CENTER);
this.add(pane2, BorderLayout.SOUTH);
setVisible(true);
}
public static void main(String[] args){
new BackgroundImage();
}
}
设置背景颜色的话使用:
frame.getContentPane().setBackground(Color.RED);
注意:在添加JPanel的时候要记得调用setOpaque()方法使panel透明,否则会挡住后面的背景。(尽量都把组件放在panel里,再把panel透明掉)。