JOptionPane试图检索选择了哪个按钮

时间:2016-10-28 18:28:13

标签: java joptionpane

我目前正试图让我的代码部分用来比较用户选择哪个按钮。此刻它会自动显示其他的Test2。

Object usersChoice;

    Object[] options = { "Go on a journey!", "Exit, i'm tired." };
    usersChoice = JOptionPane.showOptionDialog(null, "Hello Melissa :)", "Sunshine program",
    JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
    null, options, options[0]);

    if(usersChoice == options )
    {
        JOptionPane.showMessageDialog(null, "Test1");
    } else {
        JOptionPane.showMessageDialog(null, "Test2");
    }

1 个答案:

答案 0 :(得分:3)

问题出在这个代码上(为了清楚起见,我移动了usersChoice的声明):

Object[] options = [...]
Object usersChoice = JOptionPane.showOptionDialog([...])

方法JOptionPane.showOptionDialog()返回一个int。由于这是一个原语,它会被自动装箱到Integer

现在你有了这段代码:

if(usersChoice == options )

您正在将Object[]Object(更具体地说是Integer)进行比较。这将永远是错误的,因为它们是不同的类型。

还要记住,在Java中,使用==检查基元上的相等性,但Object比较这种方式将通过它们的内存位置进行比较。请使用.equals()来比较Object s。