描述:
给JFrame窗口添加图片时,我采用的是,创建一个JLayeredPane用于分层,将标签(JLabel)放入到一个JPanel面板中,然后在创建一个按钮来测试该图片是一个背景,而不是单纯的图片,然后运用分层。将JPanel放入底层,把Jbutton放入较高一层。
注意:在开始时我并没有用setbounds来设置按钮,所以就导致了按钮没有显示出来,想了想,将其加上,问题得到解决。
测试代码:
/**
* 给JFrame 添加一个背景图案。
*/
import javax.swing.*;
public class JFrameBackground4
{
JFrame jf=new JFrame("窗口");
//创建一个JLayeredPane用于分层的。
JLayeredPane layeredPane=new JLayeredPane();
//创建一个Panel和一个Label用于存放图片,作为背景。
JPanel jp=new JPanel();
JLabel jl=new JLabel();
ImageIcon image=new ImageIcon("src\\img.png");//随便找一张图就可以看到效果。
//创建一个按钮用于测试的。
JButton jb;
public void init()
{
//创建背景的相关内容
jp.setBounds(0,0,image.getIconWidth(),image.getIconHeight());
jl.setIcon(new ImageIcon("src\\img.png"));
jp.add(jl);
//创建一个测试按钮
jb=new JButton("测试按钮");
jb.setBounds(100,100,100,100);//当不加此语句时无法显示出按钮
//将jp放到最底层。
layeredPane.add(jp,JLayeredPane.DEFAULT_LAYER);
//将jb放到高一层的地方
layeredPane.add(jb,JLayeredPane.MODAL_LAYER);
jf.setLayeredPane(layeredPane);//将层级面板加入到窗口中
jf.setSize(image.getIconWidth(),image.getIconHeight());//窗口大小
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗口关闭
jf.setLocation(image.getIconWidth(),image.getIconHeight());//窗口位置
jf.setVisible(true);//设置可见
}
public static void main(String[] args)
{
new JFrameBackground4().init();
}
}