zl程序教程

您现在的位置是:首页 >  其它

当前栏目

关于JFrame添加背景图片,setbounds的小知识

关于 添加 知识 背景图片
2023-09-11 14:20:19 时间

描述:

给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();
    }
}

运行结果:

在这里插入图片描述