使用JLabel设置帧背景图像的正确方法是什么?

时间:2014-07-09 09:13:25

标签: java image swing icons

以前,我使用以下语句来设置框架的背景

  JLabel backImage = new JLabel(new ImageIcon("C\\users\\BSK\\Desktop\\win.png"));

它工作正常并产生以下结果。(按钮编码未显示)enter image description here

但是当我创建名为Resource的新包并将图像放入其中并使用以下语句

JLabel backImage=new JLabel();
ImageIcon img;
img = new ImageIcon(getClass().getResource("/Resource/win.png"));
backImage.setIcon(img);

我得到以下结果: -

enter image description here

正如您所看到的,我的拼图框超出了范围。这两种方法有什么区别?

编辑使用的JLabel backImage布局是Border Layout.i我首先将JFrame的内容窗格设置为backImage的JLabel并添加按钮在GridBagLayout中单独显示pannel,然后将pannel添加到帧的contentpane中,该帧也是JLabel backImage

1 个答案:

答案 0 :(得分:1)

ImageIcon的位置由框架内容窗格的布局管理器确定,默认为BorderLayout。或者,在按钮面板中覆盖paintComponent()。在提供的图形上下文上调用drawImage(),以便以所需的位置和大小呈现图像。将按钮面板添加到封闭框架的内容窗格中。