Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
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.
progress
Bound VariableThe 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.
state
Bound VariableThe 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
doInBackground
is invoked.STARTED
doInBackground
is invoked until shortly before done
is invoked.The current value of the state
bound variable is returned by
SwingWorker.getState
.
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.