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

javax.swing.plaf.metal

## Class MetalSliderUI

- java.lang.Object
- - javax.swing.plaf.ComponentUI
  - - javax.swing.plaf.SliderUI
    - - javax.swing.plaf.basic.BasicSliderUI
      - - javax.swing.plaf.metal.MetalSliderUI

-     public class MetalSliderUI
      extends BasicSliderUI

  A Java L&F implementation of SliderUI.

  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
    Modifier and Type | Class and Description
    --- | ---
    `protected class` | `MetalSliderUI.MetalPropertyListener`

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

      `BasicSliderUI.ActionScroller, BasicSliderUI.ChangeHandler, BasicSliderUI.ComponentHandler, BasicSliderUI.FocusHandler, BasicSliderUI.PropertyChangeHandler, BasicSliderUI.ScrollListener, BasicSliderUI.TrackListener`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static Color` | `darkShadowColor`
    `protected boolean` | `filledSlider`
    `protected static Color` | `highlightColor`
    `protected static Icon` | `horizThumbIcon` A default horizontal thumb `Icon`.
    `protected String` | `SLIDER_FILL`
    `protected static Color` | `thumbColor`
    `protected int` | `TICK_BUFFER`
    `protected static int` | `tickLength`
    `protected static int` | `trackWidth`
    `protected static Icon` | `vertThumbIcon` A default vertical thumb `Icon`.

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

      `changeListener, componentListener, contentRect, focusInsets, focusListener, focusRect, insetCache, labelRect, leftToRightCache, MAX_SCROLL, MIN_SCROLL, NEGATIVE_SCROLL, POSITIVE_SCROLL, propertyChangeListener, scrollListener, scrollTimer, slider, thumbRect, tickRect, trackBuffer, trackListener, trackRect`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `MetalSliderUI()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected PropertyChangeListener` | `createPropertyChangeListener(JSlider slider)`
    `static ComponentUI` | `createUI(JComponent c)`
    `protected int` | `getThumbOverhang()` Returns the amount that the thumb goes past the slide bar.
    `protected Dimension` | `getThumbSize()`
    `int` | `getTickLength()` Gets the height of the tick area for horizontal sliders and the width of the tick area for vertical sliders.
    `protected int` | `getTrackLength()` Returns the longer dimension of the slide bar.
    `protected int` | `getTrackWidth()` Returns the shorter dimension of the track.
    `void` | `installUI(JComponent c)` Configures the specified component appropriately for the look and feel.
    `void` | `paintFocus(Graphics g)`
    `protected void` | `paintMajorTickForHorizSlider(Graphics g, Rectangle tickBounds, int x)`
    `protected void` | `paintMajorTickForVertSlider(Graphics g, Rectangle tickBounds, int y)`
    `protected void` | `paintMinorTickForHorizSlider(Graphics g, Rectangle tickBounds, int x)`
    `protected void` | `paintMinorTickForVertSlider(Graphics g, Rectangle tickBounds, int y)`
    `void` | `paintThumb(Graphics g)`
    `void` | `paintTrack(Graphics g)`
    `protected void` | `scrollDueToClickInTrack(int dir)` This function is called when a mousePressed was detected in the track, not in the thumb.

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

      `calculateContentRect, calculateFocusRect, calculateGeometry, calculateLabelRect, calculateThumbLocation, calculateThumbSize, calculateTickRect, calculateTrackBuffer, calculateTrackRect, createChangeListener, createComponentListener, createFocusListener, createScrollListener, createTrackListener, drawInverted, getBaseline, getBaselineResizeBehavior, getFocusColor, getHeightOfHighValueLabel, getHeightOfLowValueLabel, getHeightOfTallestLabel, getHighestValue, getHighestValueLabel, getHighlightColor, getLowestValue, getLowestValueLabel, getMaximumSize, getMinimumHorizontalSize, getMinimumSize, getMinimumVerticalSize, getPreferredHorizontalSize, getPreferredSize, getPreferredVerticalSize, getShadowColor, getWidthOfHighValueLabel, getWidthOfLowValueLabel, getWidthOfWidestLabel, installDefaults, installKeyboardActions, installListeners, isDragging, labelsHaveSameBaselines, paint, paintHorizontalLabel, paintLabels, paintTicks, paintVerticalLabel, recalculateIfInsetsChanged, recalculateIfOrientationChanged, scrollByBlock, scrollByUnit, setThumbLocation, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, uninstallUI, valueForXPosition, valueForYPosition, xPositionForValue, yPositionForValue, yPositionForValue`

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

      `contains, getAccessibleChild, getAccessibleChildrenCount, update`

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

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

- - ### Field Detail

    - #### TICK_BUFFER

          protected final int TICK_BUFFER

      See Also:
        Constant Field Values

    - #### filledSlider

          protected boolean filledSlider

    - #### thumbColor

          protected static Color thumbColor

    - #### highlightColor

          protected static Color highlightColor

    - #### darkShadowColor

          protected static Color darkShadowColor

    - #### trackWidth

          protected static int trackWidth

    - #### tickLength

          protected static int tickLength

    - #### horizThumbIcon

          protected static Icon horizThumbIcon

      A default horizontal thumb `Icon`. This field might not be used. To change the `Icon` used by this delegate directly set it using the `Slider.horizontalThumbIcon` UIManager property.

    - #### vertThumbIcon

          protected static Icon vertThumbIcon

      A default vertical thumb `Icon`. This field might not be used. To change the `Icon` used by this delegate directly set it using the `Slider.verticalThumbIcon` UIManager property.

    - #### SLIDER_FILL

          protected final String SLIDER_FILL

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### MetalSliderUI

          public MetalSliderUI()

  - ### Method Detail

    - #### createUI

          public static ComponentUI createUI(JComponent c)

    - #### installUI

          public void installUI(JComponent c)

      Description copied from class: `ComponentUI`
      Configures the specified component appropriately for the look and feel. This method is invoked when the `ComponentUI` instance is being installed as the UI delegate on the specified component. This method should completely configure the component for the look and feel, including the following:
      1. Install default property values for color, fonts, borders, icons, opacity, etc. on the component. Whenever possible, property values initialized by the client program should not be overridden.
      2. Install a `LayoutManager` on the component if necessary.
      3. Create/add any required sub-components to the component.
      4. Create/install event listeners on the component.
      5. Create/install a `PropertyChangeListener` on the component in order to detect and respond to component property changes appropriately.
      6. Install keyboard UI (mnemonics, traversal, etc.) on the component.
      7. Initialize any appropriate instance data.
      Overrides:
        `installUI` in class `BasicSliderUI`
      Parameters:
        `c` - the component where this UI delegate is being installed
      See Also:
        `ComponentUI.uninstallUI(javax.swing.JComponent)`, `JComponent.setUI(javax.swing.plaf.ComponentUI)`, `JComponent.updateUI()`

    - #### createPropertyChangeListener

          protected PropertyChangeListener createPropertyChangeListener(JSlider slider)

      Overrides:
        `createPropertyChangeListener` in class `BasicSliderUI`

    - #### paintThumb

          public void paintThumb(Graphics g)

      Overrides:
        `paintThumb` in class `BasicSliderUI`

    - #### paintTrack

          public void paintTrack(Graphics g)

      Overrides:
        `paintTrack` in class `BasicSliderUI`

    - #### paintFocus

          public void paintFocus(Graphics g)

      Overrides:
        `paintFocus` in class `BasicSliderUI`

    - #### getThumbSize

          protected Dimension getThumbSize()

      Overrides:
        `getThumbSize` in class `BasicSliderUI`

    - #### getTickLength

          public int getTickLength()

      Gets the height of the tick area for horizontal sliders and the width of the tick area for vertical sliders. BasicSliderUI uses the returned value to determine the tick area rectangle.
      Overrides:
        `getTickLength` in class `BasicSliderUI`

    - #### getTrackWidth

          protected int getTrackWidth()

      Returns the shorter dimension of the track.

    - #### getTrackLength

          protected int getTrackLength()

      Returns the longer dimension of the slide bar. (The slide bar is only the part that runs directly under the thumb)

    - #### getThumbOverhang

          protected int getThumbOverhang()

      Returns the amount that the thumb goes past the slide bar.

    - #### scrollDueToClickInTrack

          protected void scrollDueToClickInTrack(int dir)

      Description copied from class: `BasicSliderUI`
      This function is called when a mousePressed was detected in the track, not in the thumb. The default behavior is to scroll by block. You can override this method to stop it from scrolling or to add additional behavior.
      Overrides:
        `scrollDueToClickInTrack` in class `BasicSliderUI`

    - #### paintMinorTickForHorizSlider

          protected void paintMinorTickForHorizSlider(Graphics g,
                                                      Rectangle tickBounds,
                                                      int x)

      Overrides:
        `paintMinorTickForHorizSlider` in class `BasicSliderUI`

    - #### paintMajorTickForHorizSlider

          protected void paintMajorTickForHorizSlider(Graphics g,
                                                      Rectangle tickBounds,
                                                      int x)

      Overrides:
        `paintMajorTickForHorizSlider` in class `BasicSliderUI`

    - #### paintMinorTickForVertSlider

          protected void paintMinorTickForVertSlider(Graphics g,
                                                     Rectangle tickBounds,
                                                     int y)

      Overrides:
        `paintMinorTickForVertSlider` in class `BasicSliderUI`

    - #### paintMajorTickForVertSlider

          protected void paintMajorTickForVertSlider(Graphics g,
                                                     Rectangle tickBounds,
                                                     int y)

      Overrides:
        `paintMajorTickForVertSlider` in class `BasicSliderUI`

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.