# Class MetalProgressBarUI

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.ProgressBarUI
javax.swing.plaf.basic.BasicProgressBarUI
javax.swing.plaf.metal.MetalProgressBarUI

public class MetalProgressBarUI extends BasicProgressBarUI
The Metal implementation of ProgressBarUI.

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`.

- ## Nested Class Summary

  ### Nested classes/interfaces declared in class BasicProgressBarUI

  `BasicProgressBarUI.ChangeHandler`
  Modifier and Type
  Class
  Description
  `class`
  `BasicProgressBarUI.ChangeHandler`
  This class should be treated as a "protected" inner class.

- ## Field Summary

  ### Fields declared in class BasicProgressBarUI

  `boxRect, changeListener, progressBar`
  Modifier and Type
  Field
  Description
  `protected Rectangle`
  `boxRect`
  Used to hold the location and size of the bouncing box (returned by getBox) to be painted.
  `protected ChangeListener`
  `changeListener`
  The instance of `ChangeListener`.
  `protected JProgressBar`
  `progressBar`
  The instance of `JProgressBar`.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `MetalProgressBarUI()`
  Constructs a `MetalProgressBarUI`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static ComponentUI`
  `createUI(JComponent c)`
  Constructs an instance of `MetalProgressBarUI`.
  `void`
  `paintDeterminate(Graphics g, JComponent c)`
  Draws a bit of special highlighting on the progress bar.
  `void`
  `paintIndeterminate(Graphics g, JComponent c)`
  Draws a bit of special highlighting on the progress bar and bouncing box.

  ### Methods declared in class BasicProgressBarUI

  `getAmountFull, getAnimationIndex, getBaseline, getBaselineResizeBehavior, getBox, getBoxLength, getCellLength, getCellSpacing, getFrameCount, getMinimumSize, getPreferredInnerHorizontal, getPreferredInnerVertical, getSelectionBackground, getSelectionForeground, getStringPlacement, incrementAnimationIndex, installDefaults, installListeners, paint, paintString, setAnimationIndex, setCellLength, setCellSpacing, startAnimationTimer, stopAnimationTimer, uninstallDefaults, uninstallListeners`
  Modifier and Type
  Method
  Description
  `protected int`
  `getAmountFull(Insets b, int width, int height)`
  This determines the amount of the progress bar that should be filled based on the percent done gathered from the model.
  `protected int`
  `getAnimationIndex()`
  Gets the index of the current animation frame.
  `int`
  `getBaseline(JComponent c, int width, int height)`
  Returns the baseline.
  `Component.BaselineResizeBehavior`
  `getBaselineResizeBehavior(JComponent c)`
  Returns an enum indicating how the baseline of the component changes as the size changes.
  `protected Rectangle`
  `getBox(Rectangle r)`
  Stores the position and size of the bouncing box that would be painted for the current animation index in `r` and returns `r`.
  `protected int`
  `getBoxLength(int availableLength, int otherDimension)`
  Returns the length of the "bouncing box" to be painted.
  `protected int`
  `getCellLength()`
  Returns the width (if HORIZONTAL) or height (if VERTICAL) of each of the individual cells/units to be rendered in the progress bar.
  `protected int`
  `getCellSpacing()`
  Returns the spacing between each of the cells/units in the progress bar.
  `protected final int`
  `getFrameCount()`
  Returns the number of frames for the complete animation loop used by an indeterminate JProgressBar.
  `Dimension`
  `getMinimumSize(JComponent c)`
  The Minimum size for this component is 10.
  `protected Dimension`
  `getPreferredInnerHorizontal()`
  Returns preferred size of the horizontal `JProgressBar`.
  `protected Dimension`
  `getPreferredInnerVertical()`
  Returns preferred size of the vertical `JProgressBar`.
  `protected Color`
  `getSelectionBackground()`
  The "selectionBackground" is the color of the text when it is painted over an unfilled area of the progress bar.
  `protected Color`
  `getSelectionForeground()`
  The "selectionForeground" is the color of the text when it is painted over a filled area of the progress bar.
  `protected Point`
  `getStringPlacement(Graphics g, String progressString, int x, int y, int width, int height)`
  Designate the place where the progress string will be painted.
  `protected void`
  `incrementAnimationIndex()`
  Sets the index of the current animation frame, to the next valid value, which results in the progress bar being repainted.
  `protected void`
  `installDefaults()`
  Installs default properties.
  `protected void`
  `installListeners()`
  Registers listeners.
  `void`
  `paint(Graphics g, JComponent c)`
  Delegates painting to one of two methods: paintDeterminate or paintIndeterminate.
  `protected void`
  `paintString(Graphics g, int x, int y, int width, int height, int amountFull, Insets b)`
  Paints the progress string.
  `protected void`
  `setAnimationIndex(int newValue)`
  Sets the index of the current animation frame to the specified value and requests that the progress bar be repainted.
  `protected void`
  `setCellLength(int cellLen)`
  Sets the cell length.
  `protected void`
  `setCellSpacing(int cellSpace)`
  Sets the cell spacing.
  `protected void`
  `startAnimationTimer()`
  Starts the animation thread, creating and initializing it if necessary.
  `protected void`
  `stopAnimationTimer()`
  Stops the animation thread.
  `protected void`
  `uninstallDefaults()`
  Unintalls default properties.
  `protected void`
  `uninstallListeners()`
  Removes all listeners installed by this object.

  ### Methods declared in class ComponentUI

  `contains, getAccessibleChild, getAccessibleChildrenCount, getMaximumSize, getPreferredSize, installUI, uninstallUI, update`
  Modifier and Type
  Method
  Description
  `boolean`
  `contains(JComponent c, int x, int y)`
  Returns `true` if the specified x,y location is contained within the look and feel's defined shape of the specified component.
  `Accessible`
  `getAccessibleChild(JComponent c, int i)`
  Returns the `i`th `Accessible` child of the object.
  `int`
  `getAccessibleChildrenCount(JComponent c)`
  Returns the number of accessible children in the object.
  `Dimension`
  `getMaximumSize(JComponent c)`
  Returns the specified component's maximum size appropriate for the look and feel.
  `Dimension`
  `getPreferredSize(JComponent c)`
  Returns the specified component's preferred size appropriate for the look and feel.
  `void`
  `installUI(JComponent c)`
  Configures the specified component appropriately for the look and feel.
  `void`
  `uninstallUI(JComponent c)`
  Reverses configuration which was done on the specified component during `installUI`.
  `void`
  `update(Graphics g, JComponent c)`
  Notifies this UI delegate that it is time to paint the specified component.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### MetalProgressBarUI

    public MetalProgressBarUI()
    Constructs a `MetalProgressBarUI`.

- ## Method Details

  - ### createUI

    public static ComponentUI createUI(JComponent c)
    Constructs an instance of `MetalProgressBarUI`.
    Parameters:
      `c` - a component
    Returns:
      an instance of `MetalProgressBarUI`

  - ### paintDeterminate

    public void paintDeterminate(Graphics g, JComponent c)
    Draws a bit of special highlighting on the progress bar. The core painting is deferred to the BasicProgressBar's `paintDeterminate` method.
    Overrides:
      `paintDeterminate` in class `BasicProgressBarUI`
    Parameters:
      `g` - an instance of `Graphics`
      `c` - a component
    Since:
      1.4
    See Also:
      - `BasicProgressBarUI.paintIndeterminate(Graphics, JComponent)`

  - ### paintIndeterminate

    public void paintIndeterminate(Graphics g, JComponent c)
    Draws a bit of special highlighting on the progress bar and bouncing box. The core painting is deferred to the BasicProgressBar's `paintIndeterminate` method.
    Overrides:
      `paintIndeterminate` in class `BasicProgressBarUI`
    Parameters:
      `g` - an instance of `Graphics`
      `c` - a component
    Since:
      1.4
    See Also:
      - `BasicProgressBarUI.paintDeterminate(Graphics, JComponent)`