2012-10-15 29 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室访问我们? ;) –