2012-10-15 24 views
4

對不起,如果這聽起來像一個愚蠢的問題,但我在JOptionPane自定義按鈕上搜索到處。我遇到了如何實現特殊按鈕,但我似乎無法在我的程序中使用它。使用自定義JOptionPane按鈕? int引用錯誤?

int choice; 
    Object[] doors = { "Door 1", "Door 2", "Door 3" }; 

    JFrame frame = new JFrame(); 

    input = "Which door do you choose?"; 
    choice = JOptionPane.showOptionDialog(frame, input, 
      "Doors", 
      JOptionPane.DEFAULT_OPTION, 
      JOptionPane.QUESTION_MESSAGE, 
      null, 
      doors, 
      doors[2]); 

    if (car == 1 && choice.equals(doors[0])) { 
     open = 3; option = 2; 
    } 
    if (car == 1 && choice.equals(doors[1])) { 
     open = 3; option = 1; 
    } 
    if (car == 1 && choice.equals(doors[2])) { 
     open = 2; option = 1; 
    } 
    if (car == 2 && choice.equals(doors[0])) { 
     open = 3; option = 2; 
    } 
    if (car == 2 && choice.equals(doors[1])) { 
     open = 1; option = 3; 
    } 
    if (car == 2 && choice.equals(doors[2])) { 
     open = 1; option = 2; 
    } 
    if (car == 3 && choice.equals(doors[0])) { 
     open = 2; option = 3; 
    } 
    if (car == 3 && choice.equals(doors[1])) { 
     open = 1; option = 3; 
    } 
    if (car == 3 && choice.equals(doors[2])) { 
     open = 2; option = 1; 
    } 

注:這不是我的整個程序有問題的方面

在對話框中的選項顯示完美,只是有錯,說:「INT不能deferenced」。我認爲我使用了錯誤的比較,但是我該如何解決?

+0

'choice'可以是0,1,2和-1在你的情況下。所以你應該在使用門[選擇]之前測試它的值,因爲如果選擇== -1(用戶關閉對話框),門[選擇]將引發異常('ArrayIndexOutOfBoundsException')。值0,1,2然後對應於門陣列中的索引。因此,門[0]例如將返回「門1」。 – florian

回答

6

你看起來是試圖解引用一個int,你試圖調用一個int,選擇的方法,而你不能用Java來完成。爲什麼不簡單地在門陣列中使用選擇? doors[choice]

// first check that the JOptionPane wasn't closed by the user 
if (choice != JOptionPane.CLOSED_OPTION) { 
    String chosenDoor = doors[choice]; 
} 

或測試選擇,因爲你正在測試汽車使用它作爲一個整數的數字。

+1

+1哈哈,希望有一天你認爲值得在Java室訪問我們? ;) –