我正在为button编写一个事件。在那里,我使用了swingworker,就像我在这个按钮代码中使用execute方法一样。一切正常,但问题是我想在execute方法之后显示一个面板在完成任务之前,面板出现了。这是我的代码。一旦执行方法完成任务,就帮助我如何显示面板
Main f2=new Main();
f2.getfile(FileName,0);
f2.execute();
Panel.setVisible(true);
Panel.setSize(815, 587);
编辑: 好吧,我找到了一个解决方案,因为如果有人面临同样的问题。我在GUI类中创建了一个方法(称之为showPanel),当调用SwingWorker done方法时,在那个完成方法中我调用showPanel方法来显示面板。
答案 0 :(得分:2)
SwingWorker
在另一个Thread
(在类javadoc中称为工作线程)然后在EDT中执行其工作,并允许在执行期间/之后更新事件调度线程。
在class Javadoc of the SwingWorker
类中明确提到了在执行方法完成之前面板变得可见的原因,这是必读的:
在此线程上调用execute()方法。它安排SwingWorker在工作线程上执行并立即返回
有关SwingWorker
的示例用法,请参阅this answer,有关详细信息,请参阅Swing concurrency tutorial。