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