我希望自定义邮件类的行为与以下代码段中的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
这样做的秘诀是什么? :)
答案 0 :(得分:2)
请参阅docs:
对话框可以是模态的。当模态对话框可见时,它会阻止用户 输入到程序中的所有其他窗口。 JOptionPane创建 模态的JDialog。要创建非模态对话框,您必须使用 直接使用JDialog类。
请参阅modal window:
...要求用户在返回之前与其进行交互 操作父应用程序
关于实现,我想swing会阻止EDT并为模态对话框创建另一个线程。