面板出现在SwingWorker执行方法之前完成其任务
我正在写一个button.In事件,在我使用的方式,我在这个按钮代码中使用execute方法swingworker。一切工作正常,但问题是,我想在execute方法结束后显示一个面板。发生什么事是面板出现在执行方法完成其任务之前。这里是我的代码。一旦执行方法完成其任务面板出现在SwingWorker执行方法之前完成其任务
Main f2=new Main();
f2.getfile(FileName,0);
f2.execute();
Panel.setVisible(true);
Panel.setSize(815, 587);
编辑: 那么我已经找到了解决,对于此,如果任何人面临着同样的疑难问题已经创建了一个方法(称之为showPanel)在GUI类,并且当完成的SwingWorker方法具d被调用,然后在那个完成的方法中,我调用showPanel方法来显示面板。
SwingWorker
在另一个Thread
(称为类javadoc中的工作线程),然后是EDT中执行其工作,并允许在其执行期间/之后更新事件调度线程。
为什么之前execute方法完成在class Javadoc of the SwingWorker
类,这显然是提到了你的面板变得可见的原因必读:
的execute()方法被调用这个线程。它调度SwingWorker在一个工作者线程的执行,并立即返回
的SwingWorker
的用法示例见this answer,或咨询Swing concurrency tutorial以获取更多信息。
_SwingWorker将在EDT上执行其后台任务,并阻止您的UI_ehhh ...不。执行可以从_any_线程调用(只需读取引用,重点在_schedules_和_worker thread_ :)它不会阻塞调用线程,这是@Zara正在观察的:execute()下面的代码行是立即执行 – kleopatra 2012-04-03 10:05:05
@kleopatra你是完全正确的。在发布之前,我有另一个(不正确)的答案版本,并且认为我在阅读SwingWorker javadoc后纠正了所有问题。我描述的行为可能发生在您将run方法调用为execute方法时。我从我的答案中删除了不正确的部分 – Robin 2012-04-03 10:10:00
不会在execute()方法工作结束时添加面板创建? – 2012-04-03 08:54:41
@JimmyGustafsson面板出现在执行方法完成之前的任务 – Xara 2012-04-03 09:00:44
请学习java命名约定并坚持使用 – kleopatra 2012-04-03 09:55:47