1

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

image = ImageIO.read(file);

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

我查看了 Stackoverflow 上的其他答案,并注意到很多人使用 .getScaledInstance 方法。

我(认为)这可能是因为我将它作为 .setIcon 使用 - 尽管我在 Java 方面不是最好的。

图像已打印,但由于尺寸原因仅显示图像的左上角。

4

2 回答 2

9

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

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

或者也许让事情更清楚:

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

文档

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

请注意,这并没有说明更改现有图像的任何内容。它只是创建一个给定大小的新图像。

于 2012-06-05T11:46:43.103 回答
0

是的

这应该工作

Image scaled =image.getScaledInstance(ImageDisplayBox.getWidth(),
                                      ImageDisplayBox.getHeight(), 5);
ImageDisplayBox.setIcon(new ImageIcon(scaled));
于 2012-06-05T12:00:30.053 回答