自定义JOptionPane图标

时间:2013-08-28 22:06:13

标签: java swing icons joptionpane

Java的"How to Make Dialogs"教程显示了这段代码:

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

将创建以下对话框:

Java's Example Dialog

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

我怀疑这可能有很多原因...例如......

如果提供的JOptionPane解析为icon(或由于某种原因无法加载基础图像),它将允许null回退到消息类型。< / p>

它允许外观忽略icon并改为使用消息类型。