- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,Accessible
,SwingConstants
JProgressBar
uses a BoundedRangeModel
as its data model,
with the value
property representing the "current" state of the task,
and the minimum
and maximum
properties representing the
beginning and end points, respectively.
To indicate that a task of unknown length is executing, you can put a progress bar into indeterminate mode. While the bar is in indeterminate mode, it animates constantly to show that work is occurring. As soon as you can determine the task's length and amount of progress, you should update the progress bar's value and switch it back to determinate mode.
Here is an example of creating a progress bar,
where task
is an object (representing some piece of work)
which returns information about the progress of the task:
progressBar = new JProgressBar(0, task.getLengthOfTask()); progressBar.setValue(0); progressBar.setStringPainted(true);Here is an example of querying the current state of the task, and using the returned value to update the progress bar:
progressBar.setValue(task.getCurrent());Here is an example of putting a progress bar into indeterminate mode, and then switching back to determinate mode once the length of the task is known:
progressBar = new JProgressBar(); ...//when the task of (initially) unknown length begins: progressBar.setIndeterminate(true); ...//do some work; get length of task... progressBar.setMaximum(newLength); progressBar.setValue(newValue); progressBar.setIndeterminate(false);
For complete examples and further documentation see How to Monitor Progress, a section in The Java Tutorial.
Warning: Swing is not thread safe. For more information see Swing's Threading Policy.
Warning:
Serialized objects of this class will not be compatible with
future Swing releases. The current serialization support is
appropriate for short term storage or RMI between applications running
the same version of Swing. As of 1.4, support for long term storage
of all JavaBeans
has been added to the java.beans
package.
Please see XMLEncoder
.
- Since:
- 1.2
- See Also:
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected class
This class implements accessibility support for theJProgressBar
class.Nested classes/interfaces declared in class javax.swing.JComponent
JComponent.AccessibleJComponent
Nested classes/interfaces declared in class java.awt.Container
Container.AccessibleAWTContainer
Nested classes/interfaces declared in class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
Field Summary
Modifier and TypeFieldDescriptionprotected ChangeEvent
Only oneChangeEvent
is needed per instance since the event's only interesting property is the immutable source, which is the progress bar.protected ChangeListener
Listens for change events sent by the progress bar's model, redispatching them to change-event listeners registered upon this progress bar.protected BoundedRangeModel
The object that holds the data for the progress bar.protected int
Whether the progress bar is horizontal or vertical.protected boolean
Whether to display a border around the progress bar.protected boolean
Whether to display a string of text on the progress bar.protected String
An optional string that can be displayed on the progress bar.Fields declared in class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Fields declared in class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Fields declared in interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Fields declared in interface javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
-
Constructor Summary
ConstructorDescriptionCreates a horizontal progress bar that displays a border but no progress string.JProgressBar
(int orient) Creates a progress bar with the specified orientation, which can be eitherSwingConstants.VERTICAL
orSwingConstants.HORIZONTAL
.JProgressBar
(int min, int max) Creates a horizontal progress bar with the specified minimum and maximum.JProgressBar
(int orient, int min, int max) Creates a progress bar using the specified orientation, minimum, and maximum.JProgressBar
(BoundedRangeModel newModel) Creates a horizontal progress bar that uses the specified model to hold the progress bar's data. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Adds the specifiedChangeListener
to the progress bar.protected ChangeListener
Subclasses that want to handle change events from the model differently can override this to return an instance of a customChangeListener
implementation.protected void
Send aChangeEvent
, whose source is thisJProgressBar
, to allChangeListener
s that have registered interest inChangeEvent
s.Gets theAccessibleContext
associated with thisJProgressBar
.Returns an array of all theChangeListener
s added to this progress bar withaddChangeListener
.int
Returns the progress bar'smaximum
value from theBoundedRangeModel
.int
Returns the progress bar'sminimum
value from theBoundedRangeModel
.getModel()
Returns the data model used by this progress bar.int
ReturnsSwingConstants.VERTICAL
orSwingConstants.HORIZONTAL
, depending on the orientation of the progress bar.double
Returns the percent complete for the progress bar.Returns aString
representation of the current progress.getUI()
Returns the look-and-feel object that renders this component.Returns the name of the look-and-feel class that renders this component.int
getValue()
Returns the progress bar's currentvalue
from theBoundedRangeModel
.boolean
Returns theborderPainted
property.boolean
Returns the value of theindeterminate
property.boolean
Returns the value of thestringPainted
property.protected void
Paints the progress bar's border if theborderPainted
property istrue
.protected String
Returns a string representation of thisJProgressBar
.void
Removes aChangeListener
from the progress bar.void
setBorderPainted
(boolean b) Sets theborderPainted
property, which istrue
if the progress bar should paint its border.void
setIndeterminate
(boolean newValue) Sets theindeterminate
property of the progress bar, which determines whether the progress bar is in determinate or indeterminate mode.void
setMaximum
(int n) Sets the progress bar's maximum value (stored in the progress bar's data model) ton
.void
setMinimum
(int n) Sets the progress bar's minimum value (stored in the progress bar's data model) ton
.void
setModel
(BoundedRangeModel newModel) Sets the data model used by theJProgressBar
.void
setOrientation
(int newOrientation) Sets the progress bar's orientation tonewOrientation
, which must beSwingConstants.VERTICAL
orSwingConstants.HORIZONTAL
.void
Sets the value of the progress string.void
setStringPainted
(boolean b) Sets the value of thestringPainted
property, which determines whether the progress bar should render a progress string.void
setUI
(ProgressBarUI ui) Sets the look-and-feel object that renders this component.void
setValue
(int n) Sets the progress bar's current value ton
.void
updateUI()
Resets the UI property to a value from the current look and feel.Methods declared in class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
Methods declared in class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
Methods declared in class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
Field Details
-
orientation
protected int orientationWhether the progress bar is horizontal or vertical. The default isHORIZONTAL
.- See Also:
-
paintBorder
protected boolean paintBorderWhether to display a border around the progress bar. The default istrue
.- See Also:
-
model
-
progressString
An optional string that can be displayed on the progress bar. The default isnull
. Setting this to a non-null
value does not imply that the string will be displayed. To display the string,paintString
must betrue
.- See Also:
-
paintString
protected boolean paintStringWhether to display a string of text on the progress bar. The default isfalse
. Setting this totrue
causes a textual display of the progress to be rendered on the progress bar. If theprogressString
isnull
, the percentage of completion is displayed on the progress bar. Otherwise, theprogressString
is rendered on the progress bar.- See Also:
-
changeEvent
Only oneChangeEvent
is needed per instance since the event's only interesting property is the immutable source, which is the progress bar. The event is lazily created the first time that an event notification is fired.- See Also:
-
changeListener
Listens for change events sent by the progress bar's model, redispatching them to change-event listeners registered upon this progress bar.- See Also:
-
-
Constructor Details
-
JProgressBar
public JProgressBar()Creates a horizontal progress bar that displays a border but no progress string. The initial and minimum values are 0, and the maximum is 100.- See Also:
-
JProgressBar
public JProgressBar(int orient) Creates a progress bar with the specified orientation, which can be eitherSwingConstants.VERTICAL
orSwingConstants.HORIZONTAL
. By default, a border is painted but a progress string is not. The initial and minimum values are 0, and the maximum is 100.- Parameters:
orient
- the desired orientation of the progress bar- Throws:
IllegalArgumentException
- iforient
is an illegal value- See Also:
-
JProgressBar
public JProgressBar(int min, int max) Creates a horizontal progress bar with the specified minimum and maximum. Sets the initial value of the progress bar to the specified minimum. By default, a border is painted but a progress string is not.The
BoundedRangeModel
that holds the progress bar's data handles any issues that may arise from improperly setting the minimum, initial, and maximum values on the progress bar. See theBoundedRangeModel
documentation for details.- Parameters:
min
- the minimum value of the progress barmax
- the maximum value of the progress bar- See Also:
-
JProgressBar
public JProgressBar(int orient, int min, int max) Creates a progress bar using the specified orientation, minimum, and maximum. By default, a border is painted but a progress string is not. Sets the initial value of the progress bar to the specified minimum.The
BoundedRangeModel
that holds the progress bar's data handles any issues that may arise from improperly setting the minimum, initial, and maximum values on the progress bar. See theBoundedRangeModel
documentation for details.- Parameters:
orient
- the desired orientation of the progress barmin
- the minimum value of the progress barmax
- the maximum value of the progress bar- Throws:
IllegalArgumentException
- iforient
is an illegal value- See Also:
-
JProgressBar
Creates a horizontal progress bar that uses the specified model to hold the progress bar's data. By default, a border is painted but a progress string is not.- Parameters:
newModel
- the data model for the progress bar- See Also:
-
-
Method Details
-
getOrientation
public int getOrientation()ReturnsSwingConstants.VERTICAL
orSwingConstants.HORIZONTAL
, depending on the orientation of the progress bar. The default orientation isSwingConstants.HORIZONTAL
.- Returns:
HORIZONTAL
orVERTICAL
- See Also:
-
setOrientation
@BeanProperty(preferred=true, visualUpdate=true, description="Set the progress bar\'s orientation.") public void setOrientation(int newOrientation) Sets the progress bar's orientation tonewOrientation
, which must beSwingConstants.VERTICAL
orSwingConstants.HORIZONTAL
. The default orientation isSwingConstants.HORIZONTAL
.- Parameters:
newOrientation
-HORIZONTAL
orVERTICAL
- Throws:
IllegalArgumentException
- ifnewOrientation
is an illegal value- See Also:
-
isStringPainted
public boolean isStringPainted()Returns the value of thestringPainted
property.- Returns:
- the value of the
stringPainted
property - See Also:
-
setStringPainted
@BeanProperty(visualUpdate=true, description="Whether the progress bar should render a string.") public void setStringPainted(boolean b) Sets the value of thestringPainted
property, which determines whether the progress bar should render a progress string. The default isfalse
, meaning no string is painted. Some look and feels might not support progress strings or might support them only when the progress bar is in determinate mode.- Parameters:
b
-true
if the progress bar should render a string- See Also:
-
getString
Returns aString
representation of the current progress. By default, this returns a simple percentageString
based on the value returned fromgetPercentComplete
. An example would be the "42%". You can change this by callingsetString
.- Returns:
- the value of the progress string, or a simple percentage string
if the progress string is
null
- See Also:
-
setString
@BeanProperty(visualUpdate=true, description="Specifies the progress string to paint") public void setString(String s) Sets the value of the progress string. By default, this string isnull
, implying the built-in behavior of using a simple percent string. If you have provided a custom progress string and want to revert to the built-in behavior, set the string back tonull
.The progress string is painted only if the
isStringPainted
method returnstrue
.- Parameters:
s
- the value of the progress string- See Also:
-
getPercentComplete
Returns the percent complete for the progress bar. Note that this number is between 0.0 and 1.0.- Returns:
- the percent complete for this progress bar
-
isBorderPainted
public boolean isBorderPainted()Returns theborderPainted
property.- Returns:
- the value of the
borderPainted
property - See Also:
-
setBorderPainted
@BeanProperty(visualUpdate=true, description="Whether the progress bar should paint its border.") public void setBorderPainted(boolean b) Sets theborderPainted
property, which istrue
if the progress bar should paint its border. The default value for this property istrue
. Some look and feels might not implement painted borders; they will ignore this property.- Parameters:
b
-true
if the progress bar should paint its border; otherwise,false
- See Also:
-
paintBorder
Paints the progress bar's border if theborderPainted
property istrue
.- Overrides:
paintBorder
in classJComponent
- Parameters:
g
- theGraphics
context within which to paint the border- See Also:
-
getUI
Returns the look-and-feel object that renders this component.- Overrides:
getUI
in classJComponent
- Returns:
- the
ProgressBarUI
object that renders this component
-
setUI
@BeanProperty(hidden=true, visualUpdate=true, description="The UI object that implements the Component\'s LookAndFeel.") public void setUI(ProgressBarUI ui) Sets the look-and-feel object that renders this component.- Parameters:
ui
- aProgressBarUI
object- See Also:
-
updateUI
public void updateUI()Resets the UI property to a value from the current look and feel.- Overrides:
updateUI
in classJComponent
- See Also:
-
getUIClassID
@BeanProperty(bound=false, expert=true, description="A string that specifies the name of the look-and-feel class.") public String getUIClassID()Returns the name of the look-and-feel class that renders this component.- Overrides:
getUIClassID
in classJComponent
- Returns:
- the string "ProgressBarUI"
- See Also:
-
createChangeListener
Subclasses that want to handle change events from the model differently can override this to return an instance of a customChangeListener
implementation. The defaultChangeListener
simply calls thefireStateChanged
method to forwardChangeEvent
s to theChangeListener
s that have been added directly to the progress bar.- Returns:
- the instance of a custom
ChangeListener
implementation. - See Also:
-
addChangeListener
Adds the specifiedChangeListener
to the progress bar.- Parameters:
l
- theChangeListener
to add
-
removeChangeListener
Removes aChangeListener
from the progress bar.- Parameters:
l
- theChangeListener
to remove
-
getChangeListeners
Returns an array of all theChangeListener
s added to this progress bar withaddChangeListener
.- Returns:
- all of the
ChangeListener
s added or an empty array if no listeners have been added - Since:
- 1.4
-
fireStateChanged
protected void fireStateChanged()Send aChangeEvent
, whose source is thisJProgressBar
, to allChangeListener
s that have registered interest inChangeEvent
s. This method is called each time aChangeEvent
is received from the model.The event instance is created if necessary, and stored in
changeEvent
.- See Also:
-
getModel
Returns the data model used by this progress bar.- Returns:
- the
BoundedRangeModel
currently in use - See Also:
-
setModel
@BeanProperty(bound=false, expert=true, description="The data model used by the JProgressBar.") public void setModel(BoundedRangeModel newModel) Sets the data model used by theJProgressBar
. Note that theBoundedRangeModel
'sextent
is not used, and is set to0
.- Parameters:
newModel
- theBoundedRangeModel
to use
-
getValue
public int getValue()Returns the progress bar's currentvalue
from theBoundedRangeModel
. The value is always between the minimum and maximum values, inclusive.- Returns:
- the current value of the progress bar
- See Also:
-
getMinimum
public int getMinimum()Returns the progress bar'sminimum
value from theBoundedRangeModel
.- Returns:
- the progress bar's minimum value
- See Also:
-
getMaximum
public int getMaximum()Returns the progress bar'smaximum
value from theBoundedRangeModel
.- Returns:
- the progress bar's maximum value
- See Also:
-
setValue
@BeanProperty(bound=false, preferred=true, description="The progress bar\'s current value.") public void setValue(int n) Sets the progress bar's current value ton
. This method forwards the new value to the model.The data model (an instance of
BoundedRangeModel
) handles any mathematical issues arising from assigning faulty values. See theBoundedRangeModel
documentation for details.If the new value is different from the previous value, all change listeners are notified.
- Parameters:
n
- the new value- See Also:
-
setMinimum
@BeanProperty(bound=false, preferred=true, description="The progress bar\'s minimum value.") public void setMinimum(int n) Sets the progress bar's minimum value (stored in the progress bar's data model) ton
.The data model (a
BoundedRangeModel
instance) handles any mathematical issues arising from assigning faulty values. See theBoundedRangeModel
documentation for details.If the minimum value is different from the previous minimum, all change listeners are notified.
- Parameters:
n
- the new minimum- See Also:
-
setMaximum
@BeanProperty(bound=false, preferred=true, description="The progress bar\'s maximum value.") public void setMaximum(int n) Sets the progress bar's maximum value (stored in the progress bar's data model) ton
.The underlying
BoundedRangeModel
handles any mathematical issues arising from assigning faulty values. See theBoundedRangeModel
documentation for details.If the maximum value is different from the previous maximum, all change listeners are notified.
- Parameters:
n
- the new maximum- See Also:
-
setIndeterminate
public void setIndeterminate(boolean newValue) Sets theindeterminate
property of the progress bar, which determines whether the progress bar is in determinate or indeterminate mode. An indeterminate progress bar continuously displays animation indicating that an operation of unknown length is occurring. By default, this property isfalse
. Some look and feels might not support indeterminate progress bars; they will ignore this property.See How to Monitor Progress for examples of using indeterminate progress bars.
- Parameters:
newValue
-true
if the progress bar should change to indeterminate mode;false
if it should revert to normal.- Since:
- 1.4
- See Also:
-
isIndeterminate
@BeanProperty(bound=false, description="Is the progress bar indeterminate (true) or normal (false)?") public boolean isIndeterminate()Returns the value of theindeterminate
property.- Returns:
- the value of the
indeterminate
property - Since:
- 1.4
- See Also:
-
paramString
Returns a string representation of thisJProgressBar
. This method is intended to be used only for debugging purposes. The content and format of the returned string may vary between implementations. The returned string may be empty but may not benull
.- Overrides:
paramString
in classJComponent
- Returns:
- a string representation of this
JProgressBar
-
getAccessibleContext
@BeanProperty(bound=false, expert=true, description="The AccessibleContext associated with this ProgressBar.") public AccessibleContext getAccessibleContext()Gets theAccessibleContext
associated with thisJProgressBar
. For progress bars, theAccessibleContext
takes the form of anAccessibleJProgressBar
. A newAccessibleJProgressBar
instance is created if necessary.- Specified by:
getAccessibleContext
in interfaceAccessible
- Overrides:
getAccessibleContext
in classComponent
- Returns:
- an
AccessibleJProgressBar
that serves as theAccessibleContext
of thisJProgressBar
-