在我的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规则,所以我在那里重构它并且效果很好。