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
example uses ProgressBarDemo
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 beforedone
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.