自定义JOptionPane图标

3

Java的“如何创建对话框”教程展示了以下代码:

//custom title, custom icon
JOptionPane.showMessageDialog(frame, "Eggs are not supposed to be green.",
        "Inane custom dialog", JOptionPane.INFORMATION_MESSAGE, icon);

这将创建以下对话框:

Java的示例对话框

当图标将被更改为icon参数时,为什么需要JOptionPane.INFORMATION_MESSAGE?

2个回答

4

该标志还指示在窗口装饰上使用哪种消息样式,请参见http://nadeausoftware.com/node/91#Usinglookandfeelspecificwindowdecorations

JOptionPane类源代码中的内容:

private static int styleFromMessageType(int messageType) {
    switch (messageType) {
    case ERROR_MESSAGE:
        return JRootPane.ERROR_DIALOG;
    case QUESTION_MESSAGE:
        return JRootPane.QUESTION_DIALOG;
    case WARNING_MESSAGE:
        return JRootPane.WARNING_DIALOG;
    case INFORMATION_MESSAGE:
        return JRootPane.INFORMATION_DIALOG;
    case PLAIN_MESSAGE:
    default:
        return JRootPane.PLAIN_DIALOG;
    }
}

在调用showMessageDialog的方法showOptionDialog中...
int style = styleFromMessageType(messageType);
JDialog dialog = pane.createDialog(parentComponent, title, style);

谢谢提供链接,信息很有用但并没有回答问题。 - Aaron
messageType 不仅用于图标,还用于窗口装饰,这可能取决于您使用的外观而不产生影响。 - GerritCap
啊,抱歉,直到看到你的评论我才明白。 - Aaron

0

我认为有许多原因导致这种情况发生...例如...

如果提供的icon无法解析(或底层图像由于某种原因无法加载),它将允许JOptionPane回退到消息类型。

这将使外观忽略icon并改用消息类型。


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