我目前正在开展一个比我原先想象的更复杂的项目。我现在的目标是显示一个消息对话框,而不会停止程序中主线程的执行。现在,我正在使用:
JOptionPane.showMessageDialog(null, message, "Received Message", JOptionPane.INFORMATION_MESSAGE);
但是这会暂停主线程中的所有其他内容,因此它不会一次显示多个对话框,只是在另一个之后。这可能就像创建一个新的JFrame而不是使用JOptionPane一样简单吗?
答案 0 :(得分:11)
根据docs:
JOptionPane创建模态的JDialog。要创建非模态对话框,必须直接使用JDialog类。
上面的链接显示了创建对话框的一些示例。
另一个选择是在自己的线程中启动JOptionPane,如下所示:
Thread t = new Thread(new Runnable(){
public void run(){
JOptionPane.showMessageDialog(null, "Hello");
}
});
t.start();
这样,即使模态对话框已启动,程序的主线程也会继续。
答案 1 :(得分:0)
您可以启动一个单独的Runnable
来显示对话框并处理响应。
答案 2 :(得分:0)
试试这个:
EventQueue.invokeLater(new Runnable(){
@Override
public void run() {
JOptionPane op = new JOptionPane("Hi..",JOptionPane.INFORMATION_MESSAGE);
JDialog dialog = op.createDialog("Break");
dialog.setAlwaysOnTop(true);
dialog.setModal(true);
dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
}
});