2014-07-09 36 views
0

以前,我是使用下面的语句,用于设置帧使用JLabel设置帧的背景图像的正确方法是什么?

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

正如你可以看到我的拼图方块熄灭scope.So的就是这两种方法之间的区别?

EDIT布局的JLabel backImage使用是边界Layout.i我首先设定的JFrame作为JLabel的是backImage的内容窗格,并且在GridBagLayout的一个单独的潘内尔添加的按钮,然后加入潘内尔到contentPane该框架再次是JLabel backImage

+0

可以是相对路径问题,试试:'img = new ImageIcon(getClass()。getResource(“Resource/win.png”));' – Pphoenix

+1

标签是如何添加到框架的?什么布局经理正在使用?考虑提供一个[可运行的示例](https://stackoverflow.com/help/mcve),它可以证明你的问题,这将减少猜测工作并产生更好的响应 – MadProgrammer

+1

@Pphoenix图像在那里,它只是在右边:P – MadProgrammer

回答

1

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

相关问题