显示“JOptionPane.showMessageDialog”而不停止执行流程

我目前正在开展一个比我原先想象的更复杂的项目。 我现在的目标是显示一个消息对话框,而不会停止程序中主线程的执行。 现在,我正在使用:

JOptionPane.showMessageDialog(null, message, "Received Message", JOptionPane.INFORMATION_MESSAGE); 

但是这会暂停主线程中的所有其他内容,因此它不会一次显示多个对话框,只是在另一个之后。 这可能就像创建一个新的JFrame而不是使用JOptionPane一样简单吗?

根据文件 :

JOptionPane创建模态的JDialog。 要创建非modal dialog,必须直接使用JDialog类。

上面的链接显示了创建对话框的一些示例。


另一个选择是在自己的线程中启动JOptionPane,如下所示:

  Thread t = new Thread(new Runnable(){ public void run(){ JOptionPane.showMessageDialog(null, "Hello"); } }); t.start(); 

这样,即使modal dialog已启动,程序的主线程也会继续。

您可以启动一个单独的Runnable来显示对话框并处理响应。

试试这个:

  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); } });