SynthScrollBarUI (Java SE 14 & JDK 14)
Description: declaration: module: java.desktop, package: javax.swing.plaf.synth, class: SynthScrollBarUI
Keywords: javax.swing.plaf.synth.SynthScrollBarUI class

Module java.desktop
Package javax.swing.plaf.synth

# Class SynthScrollBarUI

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.ScrollBarUI
javax.swing.plaf.basic.BasicScrollBarUI
javax.swing.plaf.synth.SynthScrollBarUI

All Implemented Interfaces:
  `LayoutManager`, `PropertyChangeListener`, `EventListener`, `SynthConstants`, `SynthUI`, `SwingConstants`

    public class SynthScrollBarUI
    extends BasicScrollBarUI
    implements PropertyChangeListener, SynthUI

Provides the Synth L&F UI delegate for `JScrollBar`.

Since:
  1.7

- ## Nested Class Summary

  ## Nested classes/interfaces declared in class javax.swing.plaf.basic.BasicScrollBarUI

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

- ## Field Summary

  ### Fields declared in class javax.swing.plaf.basic.BasicScrollBarUI

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

  ### Fields declared in 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`

  ### Fields declared in interface javax.swing.plaf.synth.SynthConstants

  `DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED`

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `SynthScrollBarUI()` |

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `static ComponentUI` | `createUI​(JComponent c)` | Returns a UI.
  `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.
  `void` | `paint​(Graphics g, JComponent c)` | Paints the specified component according to the Look and Feel.
  `protected void` | `paint​(SynthContext context, Graphics g)` | Paints the specified component.
  `protected void` | `paintThumb​(SynthContext context, Graphics g, Rectangle thumbBounds)` | Paints the scrollbar thumb.
  `protected void` | `paintTrack​(SynthContext context, Graphics g, Rectangle trackBounds)` | Paints the scrollbar track.
  `void` | `update​(Graphics g, JComponent c)` | Notifies this UI delegate to repaint the specified component.

  ### Methods declared in class javax.swing.plaf.basic.BasicScrollBarUI

  `configureScrollBarColors, createArrowButtonListener, createDecreaseButton, createIncreaseButton, createModelListener, createPropertyChangeListener, createScrollListener, createTrackListener, getMaximumSize, getMaximumThumbSize, getMinimumThumbSize, getSupportsAbsolutePositioning, getThumbBounds, getTrackBounds, installComponents, installDefaults, installKeyboardActions, installListeners, installUI, isThumbRollover, layoutHScrollbar, layoutVScrollbar, paintDecreaseHighlight, paintIncreaseHighlight, paintThumb, paintTrack, scrollByBlock, scrollByUnit, setThumbBounds, setThumbRollover, uninstallComponents, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, uninstallUI`

  ### Methods declared in class javax.swing.plaf.ComponentUI

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

  ### Methods declared in class java.lang.Object

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

  ### Methods declared in interface java.awt.LayoutManager

  `addLayoutComponent, layoutContainer, minimumLayoutSize, preferredLayoutSize, removeLayoutComponent`

  ### Methods declared in interface java.beans.PropertyChangeListener

  `propertyChange`

  ### Methods declared in interface javax.swing.plaf.synth.SynthUI

  `getContext, paintBorder`

- ## Constructor Details

  - ### SynthScrollBarUI

    public SynthScrollBarUI()

- ## Method Details

  - ### createUI

    public static ComponentUI createUI​(JComponent c)
    Returns a UI.
    Parameters:
      `c` - a component
    Returns:
      a UI

  - ### update

    public void update​(Graphics g, JComponent c)
    Notifies this UI delegate to repaint the specified component. This method paints the component background, then calls the `paint(SynthContext,Graphics)` method.

    In general, this method does not need to be overridden by subclasses. All Look and Feel rendering code should reside in the `paint` method.

    Overrides:
      `update` in class `ComponentUI`
    Parameters:
      `g` - the `Graphics` object used for painting
      `c` - the component being painted
    See Also:
      `paint(SynthContext,Graphics)`

  - ### paint

    public void paint​(Graphics g, JComponent c)
    Paints the specified component according to the Look and Feel.

    This method is not used by Synth Look and Feel. Painting is handled by the `paint(SynthContext,Graphics)` method.

    Overrides:
      `paint` in class `ComponentUI`
    Parameters:
      `g` - the `Graphics` object used for painting
      `c` - the component being painted
    See Also:
      `paint(SynthContext,Graphics)`

  - ### paint

    protected void paint​(SynthContext context, Graphics g)
    Paints the specified component.
    Parameters:
      `context` - context for the component being painted
      `g` - the `Graphics` object used for painting
    See Also:
      `update(Graphics,JComponent)`

  - ### paintTrack

    protected void paintTrack​(SynthContext context, Graphics g, Rectangle trackBounds)
    Paints the scrollbar track.
    Parameters:
      `context` - context for the component being painted
      `g` - `Graphics` object used for painting
      `trackBounds` - bounding box for the track

  - ### paintThumb

    protected void paintThumb​(SynthContext context, Graphics g, Rectangle thumbBounds)
    Paints the scrollbar thumb.
    Parameters:
      `context` - context for the component being painted
      `g` - `Graphics` object used for painting
      `thumbBounds` - bounding box for the thumb

  - ### getPreferredSize

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