我遇到了一个问题。我的图片太大了,因此它放大了相应的JMenuItem。我不想重复造轮子。
ImageIcon image = new ImageIcon(new ImageIcon("/home/template/img.jpg")
.getImage().getScaledInstance(32, 32, Image.SCALE_DEFAULT));
有其他的方法可以完成这件事吗?
如果你不想在代码中缩放图像(我认为这是你在问题中问的),为什么不直接从开始就制作源图像的尺寸呢?有时候最简单的解决方案是最好的!
此外,getScaledInstance()通常不是一个好的选择。这篇文章解释了为什么并提供了更好的调整图像大小的选项。如果你在其他地方使用图像,那么值得阅读该文章并使用更好的技术(例如graphics.drawImage())进行缩放。但如果你只是在菜单中使用它,那么调整源图像大小可能是最好的选择。
如果你要调整大小:
BufferedImage image = ImageIO.read("img.jpg");
BufferedImage ret = new BufferedImage(32,32,BufferedImage.TYPE_RGB);
ret.getGraphics().drawImage(image,0,0,32,32,null);
使用类似这样的代码应该可以提供给您图像,然后您可以使用 ret
创建您的ImageIcon。