在Swing中陷入僵局,不确定如何继续

时间:2014-04-08 22:33:07

标签: java multithreading swing swingworker

在我的Java Swing应用程序中,我有以下在单击按钮时调用的代码:

class MyWorker extends SwingWorker<String, Object> {

    @Override
    protected String doInBackground() throws Exception {
        loadMasterFile();
        judgeFileListModel = new DefaultListModel();
        // Refresh model
        return "Done.";
    }

    @Override
    protected void done() {
        LB.setVisible(false);
    }
}

new MyWorker().execute();

在被调用的代码中,我打开一个JFileChooser。第一次运行得很好 - 如果我在代码完成后再按下按钮就会挂起。如果我然后调试并暂停,那么我似乎有一个死锁。

我不知道如何处理这个 - 仍然是学生。

如果可能,我绝对会喜欢一些帮助。

编辑:

我已修好了!

对于有类似问题的任何人 - 由于JFileChooser位于loadMasterFile()方法内部。它显然违反了在doInBackground()中有任何GUI代码的swing规则,所以我在那里重构它并且效果很好。

0 个答案:

没有答案