2012-06-05 153 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));