在 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 的内部状态。
我正在开发一个知识问答游戏来学习 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 的内部状态。