无法在JLabel中设置图像

时间:2013-08-17 13:55:54

标签: java image swing jlabel imageicon

我设计了一个简单的表格。

其中我将一个面板作为contentPane将一个JLabel作为lblPanel。

现在我正在尝试在JLabel中设置图像。

我有WindowBuilder,所以我可以使用设置JLabel的icon属性直接设置图像。

但是,当我尝试这个时,它只显示图像的原始尺寸,这是很自然的,我们必须手动设置图像尺寸以供给整个JLabel。

所以,这是我使用JLabel的图标属性设置Image时由WindowBuilder生成的代码。

lblPanel.setIcon(new ImageIcon(Admin_Form.class.getResource("/Icons/MouthSmile.jpg")));

现在我的问题是我想将图像的大小设置为JLabel的大小,所以有任何直接的方法可以使用WindowBuilder或只是修改上面的行吗?

我还尝试了以下方式,其中我拍摄了两张Imageicon和一张图片。

以下是我尝试过的代码。

private Image img;
private ImageIcon imgicon;
private ImageIcon newimgicon;

imgicon = new ImageIcon("/Icons/MouthSmile.jpg");
img = imgicon.getImage();

newimgicon = new ImageIcon(img.getScaledInstance(lblPanel.getWidth(),lblPanel.getHeight(), Image.SCALE_SMOOTH)); 
lblPanel.setIcon(newimgicon);

但是当我删除由Window Builder生成的代码并仅使用我的代码时,不会显示图像。

我也看到了使用BufferedImage的方法,但我认为我将使用BufferedImage调整大小或ImageIcon和Image没有区别。

2 个答案:

答案 0 :(得分:0)

如果您在lblPanel添加到Container之前和JFrame可见之前尝试获取{{1}}的宽度和高度,则宽度和高度都将为0。

答案 1 :(得分:0)

您可以调整您选择使用的图像的大小,这将使JLabel成为您想要的尺寸。这是最简单的方法。