2012-06-05 62 views
1

有人可以解释为什么这行代码不起作用。没有错误给出。它根本不会调整图像大小。图像调整大小,Java

image = ImageIO.read(file); 

image.getScaledInstance(ImageDisplayBox.getWidth(), ImageDisplayBox.getHeight()); 
ImageDisplayBox.setIcon(new ImageIcon(image)); 

我看了#2其他答案,发现很多使用.getScaledInstance方法的人。

我(想)这可能是事实,我把它作为.setIcon - 虽然我不是最好的Java。

打印图像,但由于尺寸只显示图像的左上角。

+0

'image.getScaledInstance(ImageDisplayBox.getWidth(),ImageDisplayBox.getHeight(),5);''再5' - 不要使用幻数。这就是定义的常量。 –

回答

9

您忽略了返回的值。你想:

image = image.getScaledInstance(ImageDisplayBox.getWidth(), 
           ImageDisplayBox.getHeight(), 5); 

或许使事情更清晰:

Image scaled = image.getScaledInstance(ImageDisplayBox.getWidth(), 
             ImageDisplayBox.getHeight(), 5); 
ImageDisplayBox.setIcon(new ImageIcon(scaled)); 

the docs

创建此图像的缩放版本。将返回一个新的Image对象,默认情况下该对象将呈现指定宽度和高度的图像。即使原始源图像已完全加载,也可以异步加载新的Image对象。

请注意,这并没有说改变现有的图像。它只是创建一个新的图像与给定的大小。

+0

太棒了。非常感谢乔恩。我现在看到我的错误。 – user1437260

0

这应该工作

Image scaled =image.getScaledInstance(ImageDisplayBox.getWidth(), 
             ImageDisplayBox.getHeight(), 5); 
ImageDisplayBox.setIcon(new ImageIcon(scaled));