[英]Threading with Java Swing
我有一个swing worker,它配置串行端口连接。 此过程需要花费不确定的时间才能完成,有时需要1分钟,有时甚至更多。
当用户单击工作线程仍在配置时需要配置数据的按钮时,就会出现我的问题。
我想知道仅在工作线程完成后如何执行用户的请求。 否则,如果工作线程仍处于活动状态,则我希望执行等到工作线程完成为止。
将PropertyChangeListener
添加到SwingWorker
,然后可以从SwingWorker
确定状态
必须在SwingWorker
的方法done()
实现get()
,否则无法从调用的方法中获取异常
取决于代码,但我怀疑是否可以更改设置,直到当前线程结束,最好是对SwingWorker#cancel()
然后重新启动此实例
如果task.isDone()
(其中task是您的SwingWorker
task.isDone()
,则可以签入按钮ActionEvent
,并且只有在它为true时才继续。 但是您可能想要显示一个弹出窗口或其他内容,否则用户可能会困惑为什么什么也没发生。
另一个简单的解决方案是在任务运行时公开按钮并禁用它,并在任务完成后再次启用它。 然后,用户只有在按钮准备就绪后才能单击它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.