我想停止显示第二个(或第n个)showConfirmDialog,如果用户尚未解除第一个,但我找不到这样做的方法。
答案 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