2013-08-28 29 views
3

Java的"How to Make Dialogs"教程演示验证码:定制JOptionPane的图标

//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参数?

回答

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; 
    } 
} 

和在该方法中showOptionDialog其通过showMessageDialog称为..

int style = styleFromMessageType(messageType); 
JDialog dialog = pane.createDialog(parentComponent, title, style); 
+0

感谢您的链接,有用的信息,但不回答这个问题。 – Aaron

+0

messageType不仅用于图标,还用于窗口装饰,根据您使用的外观和感觉,这可能没有效果。 – GerritCap

+0

对不起,直到你的评论不太明白。 – Aaron

0

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

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

它会让外观和感觉忽略icon并改为使用消息类型。