0

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

4

3 回答 3

1

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

我通过显示一个包含JTextArea. 当我Thread收到新文本时,我将文本附加到JTextArea,并显示JTextArea它尚未显示的时间。

当用户关闭对话框时,我清除了JTextArea.

小旁注:您最好使用您在评论中添加的额外信息来更新您的问题,因为这些评论可以更清楚地说明您要解决的问题。

于 2012-07-05T18:28:53.800 回答
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
    ....
}
于 2012-07-05T14:44:38.543 回答
0

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

于 2012-07-05T14:44:45.770 回答