在下一个 JOptionPane 出现之前,JOptionPane 不会消失

JOptionPane doesn't disappear until next JOptionPane appears

我有一个显示来自 JOptionPane 的确认消息的进程。此过程从 JMenuItem 的 Actionlistener 内的 SwingUtilities.invokeLater(runnable) 调用。 runnable 的代码是这样的:

SwingUtilities.invokeLater(new Runnable(){
                    public void run(){
                        MyClass c=new MyClass(file)
                        try {
                            c.start();
                        } catch (Exception e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        try {
                            this.finalize();
                        } catch (Throwable e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                });

在 MyClass 中有这个方法:

private boolean userInput(){
    String message="yes or no?";
    JCheckBox checkbox = new JCheckBox("Do this for all.");
    Object[] params={message,checkbox};
    int n=JOptionPane.showConfirmDialog(null,params,"message",JOptionPane.YES_NO_OPTION);
    boolean answer=(n==JOptionPane.YES_OPTION)?true:false;
    if(checkbox.isSelected()){
        nextQ=false;
        nextA=answer;
    }
    return answer;
}

调用了很多次。当显示 JOptionPane 消息时,我单击它的按钮 (yes/no),但在显示下一条消息之前消息不会消失。可能是什么问题?这与方法 invokeLater 有关系吗?

我找到了解决这个问题的方法。我必须在 SwingUrtilities.invokeLater 方法中创建一个新线程。这是新代码:

SwingUtilities.invokeLater(new Runnable(){
                public void run(){
                    Thread t=new Thread(new Runnable(){
                        MyClass c=new MyClass(file)
                        public void run(){
                          c.start(); 
                        }
                     }); 
                     t.start();      
                }
            });