JMenuItem图标过大

5

我遇到了一个问题。我的图片太大了,因此它放大了相应的JMenuItem。我不想重复造轮子。

ImageIcon image = new ImageIcon(new ImageIcon("/home/template/img.jpg")
        .getImage().getScaledInstance(32, 32, Image.SCALE_DEFAULT));

有其他的方法可以完成这件事吗?
1个回答

13

如果你不想在代码中缩放图像(我认为这是你在问题中问的),为什么不直接从开始就制作源图像的尺寸呢?有时候最简单的解决方案是最好的!

此外,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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接