2011-07-25 60 views
1

下面的代碼顯示如預期一個對話框,除了不具有按鈕:JOptionPane.showOptionDialog顯示沒有按鈕?

final JPasswordField passwdField = new JPasswordField(); 
    passwdField.setColumns(20); 
    final JComponent[] inputs = new JComponent[] { passwdField }; 
    int res = JOptionPane.showOptionDialog(null, "Enter Password", "Login", 
        JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, 
        null, inputs, ""); 

示出了下面的對話框(爪哇6.2 ?,視窗7 64位):

enter image description here

爲什麼有沒有確定/取消按鈕? (順便說一句,這個對話框是不可調整大小的,所以我不知道,如果他們只是可見幀外)

(另外,按Enter鍵不關閉對話框,「X」關閉對話框)

回答

2

你的問題是輸入數組。閱讀API,它會告訴你它應該是不同的。我通常使用一個String數組,每個String代表一個按鈕String,或者有時使用對象,混合組件和字符串的混合。例如,對於

JPasswordField passField = new JPasswordField(10); 
    Object[] inputs = {passField, "OK", "Cancel"}; 
    int res = JOptionPane.showOptionDialog(null, "Enter Password", "Login", 
      JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, 
      null, inputs, ""); 
    if (res == 1) { 
    System.out.println("Password is: " + new String(passField.getPassword())); 
    } 
+0

不夠公平。改用'passwdField'作爲第二個參數。 – Carsten

+0

@Carsten:只要您在決定如何處理返回的結果(這裏由'res'保存)時考慮順序就沒有關係。 –

+0

我的意思是'showOptionDialog'的第二個參數,而不是'inputs'數組 – Carsten