【问题标题】:How to change icon size of UIManager.getIcon("OptionPane.errorIcon)?如何更改 UIManager.getIcon("OptionPane.errorIcon) 的图标大小?
【发布时间】:2020-01-04 08:04:31
【问题描述】:

我正在做一个摇摆项目。
我已经 jErrorMsgLabel 显示错误消息。
我想为jErrorMsgLabel 使用 L&F 图标,如下图所示,显示信息消息 “请为数据库指定一个值:”

原来如此

jErrorMsgLabel.setIcon(UIManager.getIcon("OptionPane.errorIcon"));`

但图标大小与JOptionPane相同

如何更改图标大小?
或者有没有其他方法可以显示错误消息?

【问题讨论】:

    标签: java swing icons uimanager


    【解决方案1】:

    您需要自己缩放图像:

    ImageIcon icon = (ImageIcon)UIManager.getIcon("OptionPane.errorIcon");
    Image image = icon.getImage();
    Image scaledImage = image.getScaledInstance(80, 80, Image.SCALE_DEFAULT);
    Icon scaledIcon = new ImageIcon( scaledImage );
    yourLabel.setIcon( scaledIcon );
    

    当然,当您将图像放大时,您会得到像素化。

    编辑:

    以下是将图标绘制为 BufferedImage 的代码,然后可以对其进行缩放:

    Icon icon = UIManager.getIcon("OptionPane.errorIcon"); 
    BufferedImage bufferedImage = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); 
    Graphics2D g = bufferedImage.createGraphics(); 
    icon.paintIcon(null, g, 0, 0); 
    g.dispose(); 
    ImageIcon errorIcon = new ImageIcon(bufferedImage.getScaledInstance(15, 15, Image.SCALE_SMOOTH));
    

    【讨论】:

    • @SwapnilNagtilak 对不起,当我发布答案时我很着急。这个概念确实有效,我只是有一些错别字。查看更新的代码。
    • 你的代码得到java.lang.ClassCastException: javax.swing.plaf.nimbus.NimbusIcon cannot be cast to javax.swing.ImageIcon
    • @SwapnilNagtilak,是的,我只用默认的 LAF 进行了测试。 Nimbus 不会直截了当,因为 NimbusIcon 不支持 getImage() 方法。您首先需要将图标绘制为 BufferedImage,然后您可以缩放 BufferedImage。
    • Icon icon = UIManager.getIcon("OptionPane.errorIcon"); BufferedImage bufferedImage = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB); Graphics2D g = bufferedImage.createGraphics(); icon.paintIcon(null, g, 0, 0); g.dispose(); ImageIcon errorIcon = new ImageIcon(bufferedImage.getScaledInstance(15, 15, Image.SCALE_SMOOTH));
    猜你喜欢
    • 2019-11-10
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2012-10-14
    • 2017-04-01
    • 1970-01-01
    相关资源
    最近更新 更多