在 JOptionPane.showInputDialog 上区分按下关闭和取消

Differentiating between pressing close and cancel on JOptionPane.showInputDialog

我正在开发一个知识问答游戏来学习 Java,但我无法区分用户何时按下 window 顶部的(通常是红色的)cancel/X 按钮然后按 JOptionPane.showInputDialog 的确定和取消选项中的取消按钮。以下是我提出问题和阅读答案的代码:

public int askQuestion() {
    JOptionPane optionPane = new JOptionPane("Here is a question", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);

    String guess = optionPane.showInputDialog(null, question, "Heres a test", JOptionPane.QUESTION_MESSAGE);
    if (guess == null){
        return ANSWER_CLOSED;
    } else {
        if (checkAnswer(guess))
            return ANSWER_CORRECT;
        else
            return ANSWER_INCORRECT;
    }
}

ANSWER_CLOSED 由取消和关闭按钮返回,有没有办法区分两者?谢谢

不,没有。那个特定的 API 没有提供足够详细的信息来了解他们是点击了按钮还是点击了 window 上的 "X"。

您当然可以制作自己的 UI 并能够以这种方式分辨,或者可能将 JOptionPane 子类化并添加一个新的 showInputDialog 方法,以了解 window 的内部状态。