如何向 JOptionPane.showInputDialog 上的按钮发出命令

How to put a command to the buttons on JOptionPane.showInputDialog

所以我环顾四周,看到了一些类似的问题,但我仍然无法让我的程序运行。我只是在家练习(我在读高中)不能让这个问题悬而未决并继续前进。这是我的代码,但我不确定我做错了什么。

    String inputAge, outputOK, outputCancel;
    Integer Age;

    inputAge = JOptionPane.showInputDialog("Enter Age To Find Your Year Of Birth", JOptionPane.OK_CANCEL_OPTION);


    if (inputAge == JOptionPane.OK_OPTION){

        System.out.println("You Were Born In The Year " + (2018 - (Age = Integer.parseInt(inputAge))));

    } else if (inputAge == JOptionPane.CANCEL_OPTION){
        System.exit(1);
    }

that the first type: java.lang.String and the second type: int.

showInputDialog(...) 方法 returns 一个字符串,而不是一个整数。所以你不能只把值赋给一个int。您需要将 String 转换为 int。类似于:

String value = JOptionPane.showInputDialog(...);
int age = Integer.parseInt(value);

在您的代码中有两个错误:

如果您使用 IDE 而不是 TextEditor 编写代码,它会检测到无法比较 inputAgeOK_OPTION 因为:

inputAgeStringOK_OPTIONstatic Integer

第二个错误是 if (inputAge == JOptionPane.OK_OPTION),假设您将 inputAge 的结果转换为整数,如下所示:Integer.valueOf(inputAge) 我们得到的结果是:

if (Integer.ValueOf(inputAge) == JOptionPane.OK_OPTION) 但如果你在 JOptionPane class 中探索,你会发现 JOptionPane.OK_OPTION 是:public static final int OK_OPTION = 0; 这意味着这部分代码:

if (inputAge == JOptionPane.OK_OPTION){

        System.out.println("You Were Born In The Year " + (2018 - (Age = Integer.parseInt(inputAge))));

    } 

仅当用户写入 0 时才执行,我不完全明白你的意思,但我认为逻辑是:

We use JOptionPane.showInputDialog(parameters) for asking the user to type a String after that we make our testing on this value.

在您的代码中,您对最终 static 变量进行了测试,所以我猜您的代码将是这样的:

inputAge = JOptionPane.showInputDialog("Enter Age To Find Your Year Of Birth", JOptionPane.OK_CANCEL_OPTION);
    if (inputAge != null) {
        if (!inputAge.isEmpty()) {
            if (Integer.valueOf(inputAge) != 0) {

                System.out.println("You Were Born In The Year " + (2018 - (Age = Integer.parseInt(inputAge))));

            }
        }
    }

使用此方法,您的代码可以获取输入并计算结果。