JFrame是由这么几部分组成:最底下一层JRootPane,上面是glassPane(一个JPanel)和layeredPane(一个JLayeredPane),而layeredPane又由contentPane(一个JPanel)和menuBar构成。
我们一般在JFrame上添加组件往往都是加在contentPane上面:
frame.getContentPane().add(btn);
要在JFrame上添加背景图片,常见做法是加在layeredPane上面,并将contentPane设置成透明的即可。
import java.awt.*;
import javax.swing.*;
public class FrameTest {
public static void main(String[] args){
JFrame jf=new JFrame("hello");
jf.setLayout(null);
ImageIcon img1 = new ImageIcon("e:/imageicon/gif.jpg");
JLabel bg = new JLabel(img1);//每次导入即声明一个对象
// 下面做背景,初始化背景
jf.getLayeredPane().add(bg,new Integer(-30000));
bg.setBounds(0, 0, img1.getIconWidth(), img1.getIconHeight());
((JPanel)jf.getContentPane()).setOpaque(false);
JButton btn=new JButton("test");
btn.setBounds(20,20,168,56);
jf.getContentPane().add(btn);
jf.pack();
jf.setVisible(true);
}
}