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

时间:2011-03-26 03:39:40

标签: java multithreading dialog jframe execution

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

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

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

3 个答案:

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