MetalScrollBarUI (Java Platform SE 8 )
Keywords: javax.swing.plaf.metal.MetalScrollBarUI class
Date: 2026-07-22

javax.swing.plaf.metal

## Class MetalScrollBarUI

- java.lang.Object
- - javax.swing.plaf.ComponentUI
  - - javax.swing.plaf.ScrollBarUI
    - - javax.swing.plaf.basic.BasicScrollBarUI
      - - javax.swing.plaf.metal.MetalScrollBarUI

- All Implemented Interfaces:
    LayoutManager, SwingConstants

      public class MetalScrollBarUI
      extends BasicScrollBarUI

  Implementation of ScrollBarUI for the Metal Look and Feel

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class javax.swing.plaf.basic.BasicScrollBarUI

      `BasicScrollBarUI.ArrowButtonListener, BasicScrollBarUI.ModelListener, BasicScrollBarUI.PropertyChangeHandler, BasicScrollBarUI.ScrollListener, BasicScrollBarUI.TrackListener`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected javax.swing.plaf.metal.MetalBumps` | `bumps`
    `protected MetalScrollButton` | `decreaseButton`
    `static String` | `FREE_STANDING_PROP`
    `protected MetalScrollButton` | `increaseButton`
    `protected boolean` | `isFreeStanding`
    `protected int` | `scrollBarWidth`

    - ### Fields inherited from class javax.swing.plaf.basic.BasicScrollBarUI

      `buttonListener, decrButton, DECREASE_HIGHLIGHT, decrGap, incrButton, INCREASE_HIGHLIGHT, incrGap, isDragging, maximumThumbSize, minimumThumbSize, modelListener, NO_HIGHLIGHT, propertyChangeListener, scrollbar, scrollListener, scrollTimer, thumbDarkShadowColor, thumbLightShadowColor, thumbRect, trackColor, trackHighlight, trackHighlightColor, trackListener, trackRect`

    - ### Fields inherited from 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

    Constructors
    Constructor and Description
    `MetalScrollBarUI()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `configureScrollBarColors()`
    `protected JButton` | `createDecreaseButton(int orientation)` Returns the view that represents the decrease view.
    `protected JButton` | `createIncreaseButton(int orientation)` Returns the view that represents the increase view.
    `protected PropertyChangeListener` | `createPropertyChangeListener()`
    `static ComponentUI` | `createUI(JComponent c)`
    `protected Dimension` | `getMinimumThumbSize()` Returns the smallest acceptable size for the thumb.
    `Dimension` | `getPreferredSize(JComponent c)` A vertical scrollbar's preferred width is the maximum of preferred widths of the (non `null`) increment/decrement buttons, and the minimum width of the thumb.
    `protected void` | `installDefaults()`
    `protected void` | `installListeners()`
    `protected void` | `paintThumb(Graphics g, JComponent c, Rectangle thumbBounds)`
    `protected void` | `paintTrack(Graphics g, JComponent c, Rectangle trackBounds)`
    `protected void` | `setThumbBounds(int x, int y, int width, int height)` This is overridden only to increase the invalid area.

    - ### Methods inherited from class javax.swing.plaf.basic.BasicScrollBarUI

      `addLayoutComponent, createArrowButtonListener, createModelListener, createScrollListener, createTrackListener, getMaximumSize, getMaximumThumbSize, getSupportsAbsolutePositioning, getThumbBounds, getTrackBounds, installComponents, installKeyboardActions, installUI, isThumbRollover, layoutContainer, layoutHScrollbar, layoutVScrollbar, minimumLayoutSize, paint, paintDecreaseHighlight, paintIncreaseHighlight, preferredLayoutSize, removeLayoutComponent, scrollByBlock, scrollByUnit, setThumbRollover, uninstallComponents, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, uninstallUI`

    - ### Methods inherited from class javax.swing.plaf.ComponentUI

      `contains, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior, getMinimumSize, update`

    - ### Methods inherited from class java.lang.Object

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

- - ### Field Detail

    - #### bumps

          protected javax.swing.plaf.metal.MetalBumps bumps

    - #### increaseButton

          protected MetalScrollButton increaseButton

    - #### decreaseButton

          protected MetalScrollButton decreaseButton

    - #### scrollBarWidth

          protected int scrollBarWidth

    - #### FREE_STANDING_PROP

          public static final String FREE_STANDING_PROP

      See Also:
        Constant Field Values

    - #### isFreeStanding

          protected boolean isFreeStanding

  - ### Constructor Detail

    - #### MetalScrollBarUI

          public MetalScrollBarUI()

  - ### Method Detail

    - #### createUI

          public static ComponentUI createUI(JComponent c)

    - #### installDefaults

          protected void installDefaults()

      Overrides:
        `installDefaults` in class `BasicScrollBarUI`

    - #### installListeners

          protected void installListeners()

      Overrides:
        `installListeners` in class `BasicScrollBarUI`

    - #### createPropertyChangeListener

          protected PropertyChangeListener createPropertyChangeListener()

      Overrides:
        `createPropertyChangeListener` in class `BasicScrollBarUI`

    - #### configureScrollBarColors

          protected void configureScrollBarColors()

      Overrides:
        `configureScrollBarColors` in class `BasicScrollBarUI`

    - #### getPreferredSize

          public Dimension getPreferredSize(JComponent c)

      Description copied from class: `BasicScrollBarUI`
      A vertical scrollbar's preferred width is the maximum of preferred widths of the (non `null`) increment/decrement buttons, and the minimum width of the thumb. The preferred height is the sum of the preferred heights of the same parts. The basis for the preferred size of a horizontal scrollbar is similar.

      The `preferredSize` is only computed once, subsequent calls to this method just return a cached size.

      Overrides:
        `getPreferredSize` in class `BasicScrollBarUI`
      Parameters:
        `c` - the `JScrollBar` that's delegating this method to us
      Returns:
        the preferred size of a Basic JScrollBar
      See Also:
        `BasicScrollBarUI.getMaximumSize(javax.swing.JComponent)`, `ComponentUI.getMinimumSize(javax.swing.JComponent)`

    - #### createDecreaseButton

          protected JButton createDecreaseButton(int orientation)

      Returns the view that represents the decrease view.
      Overrides:
        `createDecreaseButton` in class `BasicScrollBarUI`

    - #### createIncreaseButton

          protected JButton createIncreaseButton(int orientation)

      Returns the view that represents the increase view.
      Overrides:
        `createIncreaseButton` in class `BasicScrollBarUI`

    - #### paintTrack

          protected void paintTrack(Graphics g,
                                    JComponent c,
                                    Rectangle trackBounds)

      Overrides:
        `paintTrack` in class `BasicScrollBarUI`

    - #### paintThumb

          protected void paintThumb(Graphics g,
                                    JComponent c,
                                    Rectangle thumbBounds)

      Overrides:
        `paintThumb` in class `BasicScrollBarUI`

    - #### getMinimumThumbSize

          protected Dimension getMinimumThumbSize()

      Description copied from class: `BasicScrollBarUI`
      Returns the smallest acceptable size for the thumb. If the scrollbar becomes so small that this size isn't available, the thumb will be hidden.

      Warning : the value returned by this method should not be be modified, it's a shared static constant.

      Overrides:
        `getMinimumThumbSize` in class `BasicScrollBarUI`
      Returns:
        The smallest acceptable size for the thumb.
      See Also:
        `BasicScrollBarUI.getMaximumThumbSize()`

    - #### setThumbBounds

          protected void setThumbBounds(int x,
                                        int y,
                                        int width,
                                        int height)

      This is overridden only to increase the invalid area. This ensures that the "Shadow" below the thumb is invalidated
      Overrides:
        `setThumbBounds` in class `BasicScrollBarUI`
      See Also:
        `BasicScrollBarUI.getThumbBounds()`

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, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.