JOptionPane 试图检索选择了哪个按钮
JOptionPane trying to retrieve which button is selected
我目前正在尝试让我的这部分代码比较用户选择的按钮和它自己选择的按钮。目前它自动显示 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()
returns 一个整数。由于这是一个原始数据,它会自动装箱为 Integer
.
现在你有了这个代码:
if(usersChoice == options )
您正在比较 Object[]
和 Object
(更具体地说,Integer
)。这将永远是错误的,因为它们是不同的类型。
还请记住,在 Java 中,使用 ==
检查基元是否相等,但以这种方式比较的 Object
将根据它们的内存位置进行比较。使用 .equals()
来比较 Object
s.
我目前正在尝试让我的这部分代码比较用户选择的按钮和它自己选择的按钮。目前它自动显示 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()
returns 一个整数。由于这是一个原始数据,它会自动装箱为 Integer
.
现在你有了这个代码:
if(usersChoice == options )
您正在比较 Object[]
和 Object
(更具体地说,Integer
)。这将永远是错误的,因为它们是不同的类型。
还请记住,在 Java 中,使用 ==
检查基元是否相等,但以这种方式比较的 Object
将根据它们的内存位置进行比较。使用 .equals()
来比较 Object
s.