等待来自用户的消息结果,如JOptionPane

时间:2013-11-11 15:45:18

标签: java multithreading swing wait joptionpane

我希望自定义邮件类的行为与以下代码段中的JOptionPane相同:

int reply = JOptionPane.showConfirmDialog(
     null, 
     "Is the weather beautifull?", 
     "Question", 
     JOptionPane.YES_NO_OPTION
);
if (reply == JOptionPane.YES_OPTION) {
    // do something in response to yes...
} else {
    // do something in response to no...
}

所以我真正想要的是,我创建了自己的消息对象,显示它以及用户在伪代码中按下按钮的反应如下:

show my question message;
wait for user button press without blocking UI thread;
do something depending on which button the user pressed;

我尝试使用 JOptionPane 期货等待/通知等消息框,但我总是最终阻止我的UI线程。

JOptionPane这样做的秘诀是什么? :)

1 个答案:

答案 0 :(得分:2)

请参阅docs

  

对话框可以是模态的。当模态对话框可见时,它会阻止用户   输入到程序中的所有其他窗口。 JOptionPane创建   模态的JDialog。要创建非模态对话框,您必须使用   直接使用JDialog类。

请参阅modal window

  

...要求用户在返回之前与其进行交互   操作父应用程序

关于实现,我想swing会阻止EDT并为模态对话框创建另一个线程。