我有一个摆动工作器,用于配置串口连接。这个过程需要不确定的时间才能完成,有时需要1分钟才能完成。
当用户在工作线程仍在配置时单击需要配置数据的按钮时,我的问题就出现了。
我想知道只有在工作线程完成后才能执行用户的请求。如果工作线程仍处于活动状态,我希望执行等待工作线程完成。
答案 0 :(得分:5)
将PropertyChangeListener
添加到SwingWorker
,然后您就可以确定status from SwingWorker
have to implemented get()
in the SwingWorker
's method done()
,否则无法从调用的方法中获取一个例外
取决于代码,但我怀疑是否可以更改设置,直到当前线程结束,更好的是SwingWorker#cancel()
然后重新启动此实例
答案 1 :(得分:2)
如果ActionEvent
- 其中任务是您的task.isDone()
,您可以检查按钮SwingWorker
,并且只有在真实时才会继续。但是你可能想要显示一个弹出窗口或其他东西,否则用户可能会混淆为什么没有发生任何事情。
另一个简单的解决方案是在任务运行时公开按钮并禁用它,并在完成后再次启用它。然后用户无法点击按钮,直到它准备就绪。