2

我有一个配置串行端口连接的摇摆工作人员。这个过程需要一个无法确定的时间来完成,有时需要 1 分钟,有时更多。

当用户在工作线程仍在配置时单击需要配置数据的按钮时,就会出现我的问题。

我想知道只有在工作线程完成后如何执行用户的请求。否则,如果工作线程仍然存在,我希望执行等到工作线程完成。

4

2 回答 2

5
  • 添加PropertyChangeListenerSwingWorker,然后您可以SwingWorker

  • 必须get()SwingWorker's 方法done()中实现,否则无法从调用的方法中获取异常

  • 取决于代码,但我怀疑是否可以更改设置,直到当前线程结束,最好是SwingWorker#cancel()然后重新启动此实例

于 2012-10-05T11:01:46.173 回答
2

ActionEvent如果task.isDone()-任务在哪里 -你可以检查你的按钮,SwingWorker并且只有在它是真的时才继续。但是您可能想显示一个弹出窗口或其他东西,否则用户可能会感到困惑,为什么什么都没有发生。

另一个简单的解决方案是在任务运行时公开按钮并禁用它,并在完成时再次启用它。然后用户在它准备好之前不能点击按钮。

于 2012-10-05T11:00:54.700 回答