JOptionPane:设置外观后,安装“自定义”图标无效

|| 我想安装一个自定义图标来代替标准的JOptionPane信息图标。 我试过了
ImageIcon myCustomIcon = ...;
UIManager.put(\"OptionPane.informationIcon\", myCustomIcon);
但是,由于以下几行,显然这没有效果:
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
注释掉此行将给出正确的行为。我当然尝试过在设置外观之前/之后都将图标放入UIManager。 我可以以某种方式将两者结合起来以全局覆盖信息图标吗? 我正在使用Ubuntu 10.04。 问候, 莫滕     
已邀请:
        使用Metal和Windows LAF,对我来说效果很好。 也许您的LAF不支持UIManager属性。请查看UIManager默认值以获取属性列表。 如果您需要更多帮助,请在SSCCE上张贴说明问题的信息。     
        在设置外观后,您是否尝试过通过以下方式指定图标:
JOptionPane.showMessageDialog(frame,
    \"Eggs are not supposed to be green.\",
    \"Inane custom dialog\",
    JOptionPane.INFORMATION_MESSAGE,
    myCustomIcon);
更新: 以下代码在我的Windows 7上正常运行:
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class OptionPaneIcon {
    public static void main (String[] args) {
        ImageIcon myCustomIcon = loadImageIcon(\"image.png\");
        UIManager.put(\"OptionPane.informationIcon\", myCustomIcon);
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException ex) {
        } catch (InstantiationException ex) {
        } catch (IllegalAccessException ex) {
        } catch (UnsupportedLookAndFeelException ex) {
        }
        JOptionPane.showMessageDialog(null, \"Hello!\");
    }

    /** Returns an ImageIcon, or null if the path was invalid. */
    private static ImageIcon loadImageIcon(String path) {
        URL imgURL = OptionPaneIcon.class.getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println(\"Couldn\'t find file: \" + path);
                return null;
        }
    }
}
附言抱歉,我不耐烦。     

要回复问题请先登录注册