本教程适用于JDK 8。本页面描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
有关Java SE 9和后续版本中更新的语言特性的摘要,请参阅Java语言变更。
有关所有JDK版本的新功能、增强功能和已删除或弃用选项的信息,请参阅JDK发行说明。
SwingWorker
支持绑定属性,这对于与其他线程进行通信非常有用。两个绑定属性是预定义的:progress
和state
。与所有绑定属性一样,progress
和state
可以用于在事件分派线程上触发事件处理任务。
通过实现属性更改监听器,程序可以跟踪progress
、state
和其他绑定属性的变化。有关更多信息,请参阅如何编写属性更改监听器和编写事件监听器。
progress
绑定变量progress
绑定变量是一个int
值,范围从0到100。它有一个预定义的设置方法(受保护的SwingWorker.setProgress
)和一个预定义的获取方法(公共SwingWorker.getProgress
)。
示例使用ProgressBarDemo
progress
来从后台任务更新ProgressBar
控件。有关此示例的详细讨论,请参阅如何使用进度条和使用Swing组件。
state
绑定变量state
绑定变量指示SwingWorker
对象在其生命周期中的位置。绑定变量包含SwingWorker.StateValue
类型的枚举值。可能的值有:
PENDING
doInBackground
调用之前的状态。
STARTED
doInBackground
调用之前到done
调用之前的状态。
state
绑定变量的当前值由SwingWorker.getState
返回。
作为Future
接口的一部分,还有两个方法可以报告后台任务的状态。正如我们在取消后台任务中看到的那样,如果任务已取消,则isCancelled
返回true
。此外,如果任务已完成(无论是正常完成还是被取消),isDone
返回true
。