Download the JDK
Search the Tutorials
Hide the TOC
Trail: Creating a GUI with JFC/Swing
Lesson: Concurrency in Swing
Section: Worker Threads and SwingWorker
Concurrency in Swing
Initial Threads
The Event Dispatch Thread
Worker Threads and SwingWorker
Simple Background Tasks
Tasks that Have Interim Results
Canceling Background Tasks
Bound Properties and Status Methods
Home Page > Creating a GUI with JFC/Swing > Concurrency in Swing
Bound Properties and Status Methods

> `SwingWorker` supports bound properties, which are useful for communicating with other threads. Two bound properties are predefined: `progress` and `state`. As with all bound properties, `progress` and `state` can be used to trigger event-handling tasks on the event dispatch thread.

> By implementing a property change listener, a program can track changes to `progress`, `state`, and other bound properties. For more information, refer to How to Write a Property Change Listener in Writing Event Listeners.

> ### The `progress` Bound Variable

> The `progress` bound variable is an `int` value that can range from 0 to 100. It has a predefined setter method (the protected `SwingWorker.setProgress`) and a predefined getter method (the public `SwingWorker.getProgress`).

> The ``ProgressBarDemo`` example uses `progress` to update a `ProgressBar` control from a background task. For a detailed discussion of this example, refer to How to Use Progress Bars in Using Swing Components.

> ### The `state` Bound Variable

> The `state` bound variable indicates where the `SwingWorker` object is in its lifecycle. The bound variable contains an enumeration value of type `SwingWorker.StateValue`. Possible values are:
> `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. <dt`DONE`
>   The state for the remainder of the existence of the object.
> The current value of the `state` bound variable is returned by `SwingWorker.getState`.

> ### Status Methods

> Two methods, part of the `Future` interface, also report on the status of the background task. As we saw in Canceling Background Tasks, `isCancelled` returns `true` if the task has been canceled. In addition, `isDone` returns `true` if the task has finished, either normally, or by being cancelled.

Previous page: Canceling Background Tasks
Next page: Questions and Exercises: Concurrency in Swing