在SwingWorker执行方法之前出现的面板完成其任务

时间:2012-04-03 08:50:17

标签: java swing swingworker

我正在为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方法来显示面板。

1 个答案:

答案 0 :(得分:2)

SwingWorker在另一个Thread(在类javadoc中称为工作线程)然后在EDT中执行其工作,并允许在执行期间/之后更新事件调度线程。

class Javadoc of the SwingWorker类中明确提到了在执行方法完成之前面板变得可见的原因,这是必读的:

  

在此线程上调用execute()方法。它安排SwingWorker在工作线程上执行并立即返回

有关SwingWorker的示例用法,请参阅this answer,有关详细信息,请参阅Swing concurrency tutorial