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

标签 java swing joptionpane

我正在开发一个学习 Java 的问答游戏,但我无法区分用户按下窗口顶部的(通常是红色的)取消/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 没有提供足够详细的信息来了解他们是单击了按钮还是单击了窗口上的“X”。

您当然可以制作自己的 UI 并能够以这种方式进行识别,或者可能将 JOptionPane 子类化并添加一个新的 showInputDialog 方法,以了解更多窗口的内部状态。

关于java - 区分在 JOptionPane.showInputDialog 上按下关闭和取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48601197/

相关文章:

Java7 WeakHashMap isEmpty() 似乎不对

java - 如何在 Spring-Boot 中启动(并最终停止)守护线程?

java客户端服务器端socket编程实现问题

java - 使用自定义 ComboBoxUI

java - 在一个 JOptionPane 中显示所有文本,而不是逐行显示多个文本

java - 收到错误 - 打开套接字时出错 : java.net.SocketException:我的应用程序中打开的文件太多

java - 试图在表格布局中使表格行的高度相等

java - 从 CSV 文件中读取数据并将其显示在 JTable 中

java - JOptionPane 将我的代码变成一个实际的游戏

java - 如何使用showconfirmdialog更改字体?