Documentation

Bound Properties and Status Methods
Trail: Creating a GUI With JFC/Swing
Lesson: Concurrency in Swing
Section: Worker Threads and SwingWorker

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.
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