如何在Java中使用SwingWorker?

如何在Java中使用SwingWorker?

与我先前的问题有关:调用Java中另一个类的重新绘制吗?

我是Java新手,我看过一些关于SwingWorker的教程。然而,我不知道如何用我在前面的问题中给出的示例代码来实现它。

有人能解释一下如何使用SwingWorker来处理我的代码片段和/或向我介绍一个不错的教程吗?我看过了,但我还不太明白。


红颜莎娜
浏览 487回答 3
3回答

叮当猫咪

同意:在事件调度线程(EDT)上运行长期运行的任务会导致GUI锁定。不同意:因此,所做的事情之一是使用SwingUailties.InvokeLater和InvokeAndWait来保持GUI的响应性。InvokeLater仍然在EDT上运行代码,并且可以冻结您的UI!试试这个:SwingUtilities.invokeLater(new Runnable() {             @Override             public void run() {                 try {                     Thread.sleep(100000);                 } catch (InterruptedException e) {                     e.printStackTrace();                 }             }         });至少,我不能移动我的鼠标一旦我点击按钮,触发的actionPerformed与上面的代码。我是不是遗漏了什么?

大话西游666

你是正确的。通常,将在事件分派线程之外调用InvokeLater,以便在事件分派线程上运行某些内容,例如,长时间运行的任务可能会调用InvokeLater来更改显示。这是因为对Swing对象的操作必须发生在事件线程中,以维护线程安全。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java