以前,我使用以下语句来设置框架的背景
JLabel backImage = new JLabel(new ImageIcon("C\\users\\BSK\\Desktop\\win.png"));
它工作正常并产生以下结果。(按钮编码未显示)
但是当我创建名为Resource
的新包并将图像放入其中并使用以下语句
JLabel backImage=new JLabel();
ImageIcon img;
img = new ImageIcon(getClass().getResource("/Resource/win.png"));
backImage.setIcon(img);
我得到以下结果: -
正如您所看到的,我的拼图框超出了范围。这两种方法有什么区别?
编辑使用的JLabel backImage
布局是Border Layout.i我首先将JFrame的内容窗格设置为backImage
的JLabel并添加按钮在GridBagLayout中单独显示pannel,然后将pannel添加到帧的contentpane中,该帧也是JLabel backImage
。
答案 0 :(得分:1)
ImageIcon
的位置由框架内容窗格的布局管理器确定,默认为BorderLayout
。或者,在按钮面板中覆盖paintComponent()
。在提供的图形上下文上调用drawImage()
,以便以所需的位置和大小呈现图像。将按钮面板添加到封闭框架的内容窗格中。