Class JProgressBar

All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, SwingConstants
@JavaBean(defaultProperty="UI", description="A component that displays an integer value.") public class JProgressBar extends JComponent implements SwingConstants, Accessible
A component that visually displays the progress of some task. As the task progresses towards completion, the progress bar displays the task's percentage of completion. This percentage is typically represented visually by a rectangle which starts out empty and gradually becomes filled in as the task progresses. In addition, the progress bar can display a textual representation of this percentage.

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 Type Class Description
protected class  JProgressBar.AccessibleJProgressBar
This class implements accessibility support for the JProgressBar class.

Nested classes/interfaces declared in class javax.swing.JComponent

JComponent.AccessibleJComponent

Nested classes/interfaces declared in class java.awt.Container

Container.AccessibleAWTContainer

Field Summary

Modifier and Type Field Description
protected ChangeEvent changeEvent
Only one ChangeEvent is needed per instance since the event's only interesting property is the immutable source, which is the progress bar.
protected ChangeListener 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 model
The object that holds the data for the progress bar.
protected int orientation
Whether the progress bar is horizontal or vertical.
protected boolean paintBorder
Whether to display a border around the progress bar.
protected boolean paintString
Whether to display a string of text on the progress bar.
protected String progressString
An optional string that can be displayed on the progress bar.

Fields declared in interface java.awt.image.ImageObserver

ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH

Constructor Summary

Constructor Description
JProgressBar()
Creates 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 either SwingConstants.VERTICAL or SwingConstants.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 Type Method Description
void addChangeListener(ChangeListener l)
Adds the specified ChangeListener to the progress bar.
protected ChangeListener createChangeListener()
Subclasses that want to handle change events from the model differently can override this to return an instance of a custom ChangeListener implementation.
protected void fireStateChanged()
Send a ChangeEvent, whose source is this JProgressBar, to all ChangeListeners that have registered interest in ChangeEvents.
AccessibleContext getAccessibleContext()
Gets the AccessibleContext associated with this JProgressBar.
ChangeListener[] getChangeListeners()
Returns an array of all the ChangeListeners added to this progress bar with addChangeListener.
int getMaximum()
Returns the progress bar's maximum value from the BoundedRangeModel.
int getMinimum()
Returns the progress bar's minimum value from the BoundedRangeModel.
BoundedRangeModel getModel()
Returns the data model used by this progress bar.
int getOrientation()
Returns SwingConstants.VERTICAL or SwingConstants.HORIZONTAL, depending on the orientation of the progress bar.
double getPercentComplete()
Returns the percent complete for the progress bar.
String getString()
Returns a String representation of the current progress.
ProgressBarUI getUI()
Returns the look-and-feel object that renders this component.
String getUIClassID()
Returns the name of the look-and-feel class that renders this component.
int getValue()
Returns the progress bar's current value from the BoundedRangeModel.
boolean isBorderPainted()
Returns the borderPainted property.
boolean isIndeterminate()
Returns the value of the indeterminate property.
boolean isStringPainted()
Returns the value of the stringPainted property.
protected void paintBorder(Graphics g)
Paints the progress bar's border if the borderPainted property is true.
protected String paramString()
Returns a string representation of this JProgressBar.
void removeChangeListener(ChangeListener l)
Removes a ChangeListener from the progress bar.
void setBorderPainted(boolean b)
Sets the borderPainted property, which is true if the progress bar should paint its border.
void setIndeterminate(boolean newValue)
Sets the indeterminate 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) to n.
void setMinimum(int n)
Sets the progress bar's minimum value (stored in the progress bar's data model) to n.
void setModel(BoundedRangeModel newModel)
Sets the data model used by the JProgressBar.
void setOrientation(int newOrientation)
Sets the progress bar's orientation to newOrientation, which must be SwingConstants.VERTICAL or SwingConstants.HORIZONTAL.
void setString(String s)
Sets the value of the progress string.
void setStringPainted(boolean b)
Sets the value of the stringPainted 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 to n.
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.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

Methods declared in class java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

Field Details

orientation

protected int orientation
Whether the progress bar is horizontal or vertical. The default is HORIZONTAL.
See Also:

paintBorder

protected boolean paintBorder
Whether to display a border around the progress bar. The default is true.
See Also:

model

protected BoundedRangeModel model
The object that holds the data for the progress bar.
See Also:

progressString

protected String progressString
An optional string that can be displayed on the progress bar. The default is null. Setting this to a non-null value does not imply that the string will be displayed. To display the string, paintString must be true.
See Also:

paintString

protected boolean paintString
Whether to display a string of text on the progress bar. The default is false. Setting this to true causes a textual display of the progress to be rendered on the progress bar. If the progressString is null, the percentage of completion is displayed on the progress bar. Otherwise, the progressString is rendered on the progress bar.
See Also:

changeEvent

protected transient ChangeEvent changeEvent
Only one ChangeEvent 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

protected ChangeListener 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 either SwingConstants.VERTICAL or SwingConstants.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 - if orient 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 the BoundedRangeModel documentation for details.

Parameters:
min - the minimum value of the progress bar
max - 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 the BoundedRangeModel documentation for details.

Parameters:
orient - the desired orientation of the progress bar
min - the minimum value of the progress bar
max - the maximum value of the progress bar
Throws:
IllegalArgumentException - if orient is an illegal value
See Also:

JProgressBar

public JProgressBar(BoundedRangeModel newModel)
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()
Returns SwingConstants.VERTICAL or SwingConstants.HORIZONTAL, depending on the orientation of the progress bar. The default orientation is SwingConstants.HORIZONTAL.
Returns:
HORIZONTAL or VERTICAL
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 to newOrientation, which must be SwingConstants.VERTICAL or SwingConstants.HORIZONTAL. The default orientation is SwingConstants.HORIZONTAL.
Parameters:
newOrientation - HORIZONTAL or VERTICAL
Throws:
IllegalArgumentException - if newOrientation is an illegal value
See Also:

isStringPainted

public boolean isStringPainted()
Returns the value of the stringPainted 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 the stringPainted property, which determines whether the progress bar should render a progress string. The default is false, 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

public String getString()
Returns a String representation of the current progress. By default, this returns a simple percentage String based on the value returned from getPercentComplete. An example would be the "42%". You can change this by calling setString.
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 is null, 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 to null.

The progress string is painted only if the isStringPainted method returns true.

Parameters:
s - the value of the progress string
See Also:

getPercentComplete

@BeanProperty(bound=false) public double 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 the borderPainted 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 the borderPainted property, which is true if the progress bar should paint its border. The default value for this property is true. 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

protected void paintBorder(Graphics g)
Paints the progress bar's border if the borderPainted property is true.
Overrides:
paintBorder in class JComponent
Parameters:
g - the Graphics context within which to paint the border
See Also:

getUI

public ProgressBarUI getUI()
Returns the look-and-feel object that renders this component.
Overrides:
getUI in class JComponent
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 - a ProgressBarUI object
See Also:

updateUI

public void updateUI()
Resets the UI property to a value from the current look and feel.
Overrides:
updateUI in class JComponent
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 class JComponent
Returns:
the string "ProgressBarUI"
See Also:

createChangeListener

protected ChangeListener createChangeListener()
Subclasses that want to handle change events from the model differently can override this to return an instance of a custom ChangeListener implementation. The default ChangeListener simply calls the fireStateChanged method to forward ChangeEvents to the ChangeListeners that have been added directly to the progress bar.
Returns:
the instance of a custom ChangeListener implementation.
See Also:

addChangeListener

public void addChangeListener(ChangeListener l)
Adds the specified ChangeListener to the progress bar.
Parameters:
l - the ChangeListener to add

removeChangeListener

public void removeChangeListener(ChangeListener l)
Removes a ChangeListener from the progress bar.
Parameters:
l - the ChangeListener to remove

getChangeListeners

@BeanProperty(bound=false) public ChangeListener[] getChangeListeners()
Returns an array of all the ChangeListeners added to this progress bar with addChangeListener.
Returns:
all of the ChangeListeners added or an empty array if no listeners have been added
Since:
1.4

fireStateChanged

protected void fireStateChanged()
Send a ChangeEvent, whose source is this JProgressBar, to all ChangeListeners that have registered interest in ChangeEvents. This method is called each time a ChangeEvent is received from the model.

The event instance is created if necessary, and stored in changeEvent.

See Also:

getModel

public BoundedRangeModel 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 the JProgressBar. Note that the BoundedRangeModel's extent is not used, and is set to 0.
Parameters:
newModel - the BoundedRangeModel to use

getValue

public int getValue()
Returns the progress bar's current value from the BoundedRangeModel. 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's minimum value from the BoundedRangeModel.
Returns:
the progress bar's minimum value
See Also:

getMaximum

public int getMaximum()
Returns the progress bar's maximum value from the BoundedRangeModel.
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 to n. 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 the BoundedRangeModel 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) to n.

The data model (a BoundedRangeModel instance) handles any mathematical issues arising from assigning faulty values. See the BoundedRangeModel 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) to n.

The underlying BoundedRangeModel handles any mathematical issues arising from assigning faulty values. See the BoundedRangeModel 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 the indeterminate 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 is false. 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 the indeterminate property.
Returns:
the value of the indeterminate property
Since:
1.4
See Also:

paramString

protected String paramString()
Returns a string representation of this JProgressBar. 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 be null.
Overrides:
paramString in class JComponent
Returns:
a string representation of this JProgressBar

getAccessibleContext

@BeanProperty(bound=false, expert=true, description="The AccessibleContext associated with this ProgressBar.") public AccessibleContext getAccessibleContext()
Gets the AccessibleContext associated with this JProgressBar. For progress bars, the AccessibleContext takes the form of an AccessibleJProgressBar. A new AccessibleJProgressBar instance is created if necessary.
Specified by:
getAccessibleContext in interface Accessible
Overrides:
getAccessibleContext in class Component
Returns:
an AccessibleJProgressBar that serves as the AccessibleContext of this JProgressBar

© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/swing/JProgressBar.html