停止后续JOptionPane的排队

时间:2012-07-05 14:37:01

标签: java swing dialog

我想停止显示第二个(或第n个)showConfirmDialog,如果用户尚未解除第一个,但我找不到这样做的方法。

3 个答案:

答案 0 :(得分:1)

JOptionPane.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
    ....
}

答案 1 :(得分:1)

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

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

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

小方注意:您最好使用您在评论中添加的额外信息更新您的问题,因为这些评论会更清楚您要解决的问题。

答案 2 :(得分:0)

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