Java 停止后续JOptionPane的排队

Java 停止后续JOptionPane的排队,java,swing,dialog,Java,Swing,Dialog,如果用户还没有关闭第一个showConfirmDialog,我想停止显示第二个(或第n个)showConfirmDialog,但我找不到这样做的方法 正在阻塞。检查调用的返回值以确定是否应显示下一个对话框,如下所示: int result = JOptionPane.showConfirmDialog(frame, "First question?"); if (result != JOptionPane.CANCEL_OPTION) { int nextResult = JOpti

如果用户还没有关闭第一个showConfirmDialog,我想停止显示第二个(或第n个)showConfirmDialog,但我找不到这样做的方法

正在阻塞。检查调用的返回值以确定是否应显示下一个对话框,如下所示:

int result = JOptionPane.showConfirmDialog(frame, "First question?");

if (result != JOptionPane.CANCEL_OPTION) {

    int nextResult = JOptionPane.showConfirmDialog(frame, "Next question?");
    ...
}

如果您有一系列问题要问,您可以在用户关闭对话框时使用循环和中断:

for (String question : questions) {

    int result = JOptionPane.showConfirmDialog(frame, question);

    if (result == JOptionPane.CANCEL_OPTION)
        break;

    // handle (yes/no) the response
    ....
}

我建议使用直接JDialog(JOptionPane只是创建JDialog的快捷方式)。您可以使用WindowListener/windowClosing事件来确定是否应该显示下一个JOptionPane

如果我正确理解您的问题(和评论),您有一个特定的
线程来侦听套接字上的文本,当它收到文本时,它会显示一个带有新文本的新对话框

我通过显示包含
JTextArea
的对话框解决了类似的问题。当我的
线程
收到新文本时,我将文本附加到
JTextArea
,并在尚未显示时显示
JTextArea

当用户取消对话框时,我清除了
JTextArea


小旁注:你最好用你在评论中添加的额外信息更新你的问题,因为这些评论更清楚地表明你要解决什么问题。

你是说同时显示多个确认对话框?你能给我们一个(简短的)代码示例来说明你是如何称呼他们的吗?对不起,伙计们,我没有很好地解释我自己。我有一个可运行的内部类,它正在侦听套接字上的某个文本字符串。如果到达,则会弹出JOptionPane.showConfirmDialog。没关系。除非发送该字符串的远程对等方在另一端取消,然后决定重新发送该字符串,否则接收客户端将显示另一个ConfirmDialog,并且我不允许显示第二个或后续的ConfirmDialog。我仍然认为@dacwe的答案适合您的问题。无论如何,也许你应该通过添加一些ack消息,或者甚至发送一条消息来显示第一条消息已被取消,从而使套接字通信更加健壮。我已经有了这样的代码——它不起作用。不能返回ACK,因为接收客户端只是将对话框挂在屏幕上-我想确保另一个对话框也不会出现-我不在乎接收客户端是否从不单击YEs(是)或No(否),我只是不想再构造另一个对话框。再次抱歉,伙计们——我的错误——if子句中有一个错误的布尔值,该值旨在阻止后续的消息对话框。我把它整理好了,这次谢谢你。