public class JProgressBar extends JComponent implements SwingConstants, Accessible
 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.
BasicProgressBarUI, 
BoundedRangeModel, 
SwingWorker| Modifier and Type | Class and Description | 
|---|---|
| protected class  | JProgressBar.AccessibleJProgressBarThis class implements accessibility support for the
  JProgressBarclass. | 
JComponent.AccessibleJComponentContainer.AccessibleAWTContainerComponent.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy| Modifier and Type | Field and Description | 
|---|---|
| protected ChangeEvent | changeEventOnly one  ChangeEventis needed per instance since the
 event's only interesting property is the immutable source, which
 is the progress bar. | 
| protected ChangeListener | changeListenerListens for change events sent by the progress bar's model,
 redispatching them
 to change-event listeners registered upon
 this progress bar. | 
| protected BoundedRangeModel | modelThe object that holds the data for the progress bar. | 
| protected int | orientationWhether the progress bar is horizontal or vertical. | 
| protected boolean | paintBorderWhether to display a border around the progress bar. | 
| protected boolean | paintStringWhether to display a string of text on the progress bar. | 
| protected String | progressStringAn optional string that can be displayed on the progress bar. | 
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWaccessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTBOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WESTABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH| Constructor and Description | 
|---|
| JProgressBar()Creates a horizontal progress bar
 that displays a border but no progress string. | 
| JProgressBar(BoundedRangeModel newModel)Creates a horizontal progress bar
 that uses the specified model
 to hold the progress bar's data. | 
| JProgressBar(int orient)Creates a progress bar with the specified orientation,
 which can be
 either  SwingConstants.VERTICALorSwingConstants.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. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addChangeListener(ChangeListener l)Adds the specified  ChangeListenerto 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  ChangeListenerimplementation. | 
| protected void | fireStateChanged()Send a  ChangeEvent, whose source is thisJProgressBar, to
 allChangeListeners that have registered interest inChangeEvents. | 
| AccessibleContext | getAccessibleContext()Gets the  AccessibleContextassociated with thisJProgressBar. | 
| ChangeListener[] | getChangeListeners()Returns an array of all the  ChangeListeners added
 to this progress bar withaddChangeListener. | 
| int | getMaximum()Returns the progress bar's  maximumvalue
 from theBoundedRangeModel. | 
| int | getMinimum()Returns the progress bar's  minimumvalue
 from theBoundedRangeModel. | 
| BoundedRangeModel | getModel()Returns the data model used by this progress bar. | 
| int | getOrientation()Returns  SwingConstants.VERTICALorSwingConstants.HORIZONTAL, depending on the orientation
 of the progress bar. | 
| double | getPercentComplete()Returns the percent complete for the progress bar. | 
| String | getString()Returns a  Stringrepresentation 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  valuefrom theBoundedRangeModel. | 
| boolean | isBorderPainted()Returns the  borderPaintedproperty. | 
| boolean | isIndeterminate()Returns the value of the  indeterminateproperty. | 
| boolean | isStringPainted()Returns the value of the  stringPaintedproperty. | 
| protected void | paintBorder(Graphics g)Paints the progress bar's border if the  borderPaintedproperty istrue. | 
| protected String | paramString()Returns a string representation of this  JProgressBar. | 
| void | removeChangeListener(ChangeListener l)Removes a  ChangeListenerfrom the progress bar. | 
| void | setBorderPainted(boolean b)Sets the  borderPaintedproperty, which istrueif the progress bar should paint its border. | 
| void | setIndeterminate(boolean newValue)Sets the  indeterminateproperty 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 beSwingConstants.VERTICALorSwingConstants.HORIZONTAL. | 
| void | setString(String s)Sets the value of the progress string. | 
| void | setStringPainted(boolean b)Sets the value of the  stringPaintedproperty,
 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. | 
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, 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, updateadd, 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, validateTreeaction, 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, 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, getPeer, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycleprotected int orientation
HORIZONTAL.setOrientation(int)protected boolean paintBorder
true.setBorderPainted(boolean)protected BoundedRangeModel model
setModel(javax.swing.BoundedRangeModel)protected String progressString
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.protected boolean paintString
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.protected transient ChangeEvent changeEvent
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.fireStateChanged()protected ChangeListener changeListener
createChangeListener()public JProgressBar()
public JProgressBar(int orient)
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.orient - the desired orientation of the progress barIllegalArgumentException - if orient is an illegal valuesetOrientation(int), 
setBorderPainted(boolean), 
setStringPainted(boolean), 
setString(java.lang.String), 
setIndeterminate(boolean)public JProgressBar(int min,
                    int max)
 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.
min - the minimum value of the progress barmax - the maximum value of the progress barBoundedRangeModel, 
setOrientation(int), 
setBorderPainted(boolean), 
setStringPainted(boolean), 
setString(java.lang.String), 
setIndeterminate(boolean)public JProgressBar(int orient,
                    int min,
                    int max)
 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.
orient - the desired orientation of the progress barmin - the minimum value of the progress barmax - the maximum value of the progress barIllegalArgumentException - if orient is an illegal valueBoundedRangeModel, 
setOrientation(int), 
setBorderPainted(boolean), 
setStringPainted(boolean), 
setString(java.lang.String), 
setIndeterminate(boolean)public JProgressBar(BoundedRangeModel newModel)
newModel - the data model for the progress barsetOrientation(int), 
setBorderPainted(boolean), 
setStringPainted(boolean), 
setString(java.lang.String), 
setIndeterminate(boolean)public int getOrientation()
SwingConstants.VERTICAL or
 SwingConstants.HORIZONTAL, depending on the orientation
 of the progress bar. The default orientation is
 SwingConstants.HORIZONTAL.HORIZONTAL or VERTICALsetOrientation(int)public void setOrientation(int newOrientation)
newOrientation,
 which must be SwingConstants.VERTICAL or
 SwingConstants.HORIZONTAL. The default orientation
 is SwingConstants.HORIZONTAL.newOrientation - HORIZONTAL or VERTICALIllegalArgumentException - if newOrientation
                                              is an illegal valuegetOrientation()public boolean isStringPainted()
stringPainted property.stringPainted propertysetStringPainted(boolean), 
setString(java.lang.String)public void setStringPainted(boolean b)
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.b - true if the progress bar should render a stringisStringPainted(), 
setString(java.lang.String)public String getString()
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.nullsetString(java.lang.String)public void setString(String s)
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.
s - the value of the progress stringgetString(), 
setStringPainted(boolean), 
isStringPainted()public double getPercentComplete()
public boolean isBorderPainted()
borderPainted property.borderPainted propertysetBorderPainted(boolean)public void setBorderPainted(boolean b)
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.b - true if the progress bar
                  should paint its border;
                  otherwise, falseisBorderPainted()protected void paintBorder(Graphics g)
borderPainted
 property is true.paintBorder in class JComponentg - the Graphics context within which to paint the borderJComponent.paint(java.awt.Graphics), 
JComponent.setBorder(javax.swing.border.Border), 
isBorderPainted(), 
setBorderPainted(boolean)public ProgressBarUI getUI()
ProgressBarUI object that renders this componentpublic void setUI(ProgressBarUI ui)
ui - a ProgressBarUI objectUIDefaults.getUI(javax.swing.JComponent)public void updateUI()
updateUI in class JComponentJComponent.updateUI()public String getUIClassID()
getUIClassID in class JComponentJComponent.getUIClassID(), 
UIDefaults.getUI(javax.swing.JComponent)protected ChangeListener createChangeListener()
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.changeListener, 
fireStateChanged(), 
ChangeListener, 
BoundedRangeModelpublic void addChangeListener(ChangeListener l)
ChangeListener to the progress bar.l - the ChangeListener to addpublic void removeChangeListener(ChangeListener l)
ChangeListener from the progress bar.l - the ChangeListener to removepublic ChangeListener[] getChangeListeners()
ChangeListeners added
 to this progress bar with addChangeListener.ChangeListeners added or an empty
         array if no listeners have been addedprotected void fireStateChanged()
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.
public BoundedRangeModel getModel()
BoundedRangeModel currently in usesetModel(javax.swing.BoundedRangeModel), 
BoundedRangeModelpublic void setModel(BoundedRangeModel newModel)
JProgressBar.
 Note that the BoundedRangeModel's extent is not used,
 and is set to 0.newModel - the BoundedRangeModel to usepublic int getValue()
value
 from the BoundedRangeModel.
 The value is always between the
 minimum and maximum values, inclusive.setValue(int), 
BoundedRangeModel.getValue()public int getMinimum()
minimum value
 from the BoundedRangeModel.setMinimum(int), 
BoundedRangeModel.getMinimum()public int getMaximum()
maximum value
 from the BoundedRangeModel.setMaximum(int), 
BoundedRangeModel.getMaximum()public void setValue(int n)
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.
n - the new valuegetValue(), 
addChangeListener(javax.swing.event.ChangeListener), 
BoundedRangeModel.setValue(int)public void setMinimum(int n)
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.
n - the new minimumgetMinimum(), 
addChangeListener(javax.swing.event.ChangeListener), 
BoundedRangeModel.setMinimum(int)public void setMaximum(int n)
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.
n - the new maximumgetMaximum(), 
addChangeListener(javax.swing.event.ChangeListener), 
BoundedRangeModel.setMaximum(int)public void setIndeterminate(boolean newValue)
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.
newValue - true if the progress bar
                  should change to indeterminate mode;
                  false if it should revert to normal.isIndeterminate(), 
BasicProgressBarUIpublic boolean isIndeterminate()
indeterminate property.indeterminate propertysetIndeterminate(boolean)protected String paramString()
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.paramString in class JComponentJProgressBarpublic AccessibleContext getAccessibleContext()
AccessibleContext associated with this
 JProgressBar. For progress bars, the
 AccessibleContext takes the form of an
 AccessibleJProgressBar.
 A new AccessibleJProgressBar instance is created if necessary.getAccessibleContext in interface AccessiblegetAccessibleContext in class ComponentAccessibleJProgressBar that serves as the
         AccessibleContext of this JProgressBar Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2023, Oracle and/or its affiliates.  All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.