我目前正在尝试获取这部分代码,以将用户选择的按钮与其本身的按钮进行比较。此时它会自动显示 else 即 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");
}
最佳答案
问题出在这段代码上(为了清楚起见,我移动了 usersChoice
的声明):
Object[] options = [...]
Object usersChoice = JOptionPane.showOptionDialog([...])
方法JOptionPane.showOptionDialog()
返回一个int。由于这是一个基元,因此它会自动装箱为Integer
。
现在你有了这个代码:
if(usersChoice == options )
您正在将 Object[]
与 Object
(更具体地说,Integer
)进行比较。这永远是错误的,因为它们是不同的类型。
还请记住,在 Java 中,使用 ==
检查基元是否相等,但以这种方式比较的对象
将通过其内存位置进行比较。使用 .equals()
来比较 Object
。
关于java - JOptionPane 尝试检索选择了哪个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40311132/