# 绑定属性和状态方法

> 原文： [https://docs.oracle.com/javase/tutorial/uiswing/concurrency/bound.html](https://docs.oracle.com/javase/tutorial/uiswing/concurrency/bound.html)

`SwingWorker`支持[绑定属性](../../javabeans/writing/properties.html#bound)，这对于与其他线程通信很有用。预定义了两个绑定属性：`progress`和`state`。与所有绑定属性一样，`progress`和`state`可用于触发事件派发线程上的事件处理任务。

通过实现属性更改侦听器，程序可以跟踪对`progress`，`state`和其他绑定属性的更改。有关更多信息，请参阅[如何在](../events/propertychangelistener.html)[编写事件监听器](../events/index.html)中编写属性更改侦听器。

## `progress`绑定变量

`progress`绑定变量是`int`值，范围从 0 到 100.它有一个预定义的 setter 方法（受保护的 [`SwingWorker.setProgress`](https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingWorker.html#setProgress--) ）和预定义的 getter 方法（public [`SwingWorker.getProgress`](https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingWorker.html#getProgress-int-) ）。

[``ProgressBarDemo`` ](../examples/components/ProgressBarDemoProject/src/components/ProgressBarDemo.java)示例使用`progress`从后台任务更新`ProgressBar`控件。有关此示例的详细讨论，请参阅[如何在](../components/progress.html)[中使用 Swing 组件](../components/index.html)使用进度条。

## `state`绑定变量

`state`绑定变量指示`SwingWorker`对象在其生命周期中的位置。绑定变量包含`SwingWorker.StateValue`类型的枚举值。可能的值是：

`PENDING`

The state during the period from the construction of the object until just before `doInBackground` is invoked.

`STARTED`

The state during the period from shortly before `doInBackground` is invoked until shortly before `done` is invoked.

DONE

The state for the remainder of the existence of the object.

[COG0]绑定变量的当前值由 [`SwingWorker.getState`](https://docs.oracle.com/javase/8/docs/api/javax/swing/SwingWorker.html#getState--) 返回。

## 现状方法

两个方法（`Future`接口的一部分）也报告后台任务的状态。正如我们在[取消后台任务](cancel.html)中看到的，如果任务已被取消，`isCancelled`将返回`true`。此外，如果任务已正常完成或被取消，`isDone`将返回`true`。