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

Java SwingWorker执行方法完成其任务之前出现的面板,java,swing,swingworker,Java,Swing,Swingworker,我正在为button写一个事件,我在这个按钮代码中使用了swingworker,就像我在这个按钮代码中使用execute方法一样。一切正常,但问题是我想在execute方法完成后显示一个面板。现在发生的是,该面板在execute方法完成其任务之前出现。这是我的代码。请帮助我在完成任务后如何显示面板execute方法已完成其任务 Main f2=new Main(); f2.getfile(FileName,0);

我正在为button写一个事件,我在这个按钮代码中使用了swingworker,就像我在这个按钮代码中使用execute方法一样。一切正常,但问题是我想在execute方法完成后显示一个面板。现在发生的是,该面板在execute方法完成其任务之前出现。这是我的代码。请帮助我在完成任务后如何显示面板execute方法已完成其任务

               Main f2=new Main();
               f2.getfile(FileName,0);
               f2.execute();
               Panel.setVisible(true);
               Panel.setSize(815, 587);
编辑:
如果有人面临同样的问题,我已经找到了一个解决方案。我在GUI类中创建了一个方法(称为showPanel),当SwingWorker完成方法被调用时,我在该完成方法中调用showPanel方法来显示面板。

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

在类中清楚地提到了为什么在execute方法完成之前您的面板变得可见,这是必须阅读的:

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


有关
SwingWorker
的用法示例,请参阅,或参阅以获取更多信息。

不会在execute()末尾添加面板创建方法工作?@JimmyGustafsson面板在execute方法完成其任务之前出现。请学习java命名约定并坚持这些约定。Worker将在EDT上执行其后台任务,并阻止您的UI ehhh…否。execute可从任何线程调用(只需阅读您的引文,重点是时间表和工作线程:)它不会阻止调用线程,这正是@Zara观察到的:execute()下面的代码行被执行immediately@kleopatra你完全正确。我有另一个(不正确)在我发布这个答案之前,我想我在阅读SwingWorker javadoc后更正了所有内容。我描述的行为可能发生在您将run方法调用为execute方法时。我从我的答案中删除了不正确的部分