2013-08-28 32 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並改爲使用消息類型。