java - JOptionPane 尝试检索选择了哪个按钮

标签 java joptionpane

我目前正在尝试获取这部分代码,以将用户选择的按钮与其本身的按钮进行比较。此时它会自动显示 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/

相关文章:

java - JFugue 5 音符问题

java - JOptionPane 输出文本副本

java - 如何将 JOptionPane 和 Frame 合并为一

java - 将 JDBC 与在线 MySQL DB 一起用于 Android 应用程序

java - 打印 Java 2D 数组的最佳方法?

java - TLSv1.2 不使用 SHA256 摘要

可变日期长度的 Java 正则表达式模式

java - 更改选项框的颜色和大小 JOptionPane.showInputDialog

java - 根据 Java 中的用户输入绘制圆圈

java - 创建一个不可关闭的 JOptionPane