有人可以解释为什么这行代码不起作用。没有错误。它根本不会调整图像大小。
image = ImageIO.read(file);
image.getScaledInstance(ImageDisplayBox.getWidth(), ImageDisplayBox.getHeight());
ImageDisplayBox.setIcon(new ImageIcon(image));
我已经查看了Stackoverflow上的其他答案,并注意到很多人使用.getScaledInstance方法。
我(想)可能是因为我把它作为.setIcon - 虽然我不是最好的Java。
图像已打印,但由于尺寸原因仅显示图像的左上角。
答案 0 :(得分: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对象。
请注意,这并未说明有关更改现有图像的信息。它只是创建一个具有给定大小的 new 图像。
答案 1 :(得分:0)
是
这应该有效
Image scaled =image.getScaledInstance(ImageDisplayBox.getWidth(),
ImageDisplayBox.getHeight(), 5);
ImageDisplayBox.setIcon(new ImageIcon(scaled));