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()`
Constructs a `SynthScrollBarUI`.

## Method Summary

Modifier and Type
Method
Description
`static ComponentUI`
`createUI​(JComponent c)`
Returns a UI.
`SynthContext`
`getContext​(JComponent c)`
Returns the Context for the specified component.
`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.
`void`
`paintBorder​(SynthContext context, Graphics g, int x, int y, int w, int h)`
Paints the border.
`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`
`propertyChange​(PropertyChangeEvent e)`
This method gets called when a bound property is changed.
`void`
`update​(Graphics g, JComponent c)`
Notifies this UI delegate to repaint the specified component.

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

`addLayoutComponent, configureScrollBarColors, createArrowButtonListener, createDecreaseButton, createIncreaseButton, createModelListener, createPropertyChangeListener, createScrollListener, createTrackListener, getMaximumSize, getMaximumThumbSize, getMinimumThumbSize, getSupportsAbsolutePositioning, getThumbBounds, getTrackBounds, installComponents, installDefaults, installKeyboardActions, installListeners, installUI, isThumbRollover, layoutContainer, layoutHScrollbar, layoutVScrollbar, minimumLayoutSize, paintDecreaseHighlight, paintIncreaseHighlight, paintThumb, paintTrack, preferredLayoutSize, removeLayoutComponent, 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`

## Constructor Details

### SynthScrollBarUI

public SynthScrollBarUI()
Constructs a `SynthScrollBarUI`.

## Method Details

### createUI

public static ComponentUI createUI​(JComponent c)
Returns a UI.

Parameters:
  `c` - a component
Returns:
  a UI

### getContext

public SynthContext getContext​(JComponent c)
Returns the Context for the specified component.

Specified by:
  `getContext` in interface `SynthUI`
Parameters:
  `c` - Component requesting SynthContext.
Returns:
  SynthContext describing component.

### 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)`

### paintBorder

public void paintBorder​(SynthContext context, Graphics g, int x, int y, int w, int h)
Paints the border.

Specified by:
  `paintBorder` in interface `SynthUI`
Parameters:
  `context` - a component context
  `g` - `Graphics` to paint on
  `x` - the X coordinate
  `y` - the Y coordinate
  `w` - width of the border
  `h` - height of the border

### 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)`

### propertyChange

public void propertyChange​(PropertyChangeEvent e)
Description copied from interface: `PropertyChangeListener`
This method gets called when a bound property is changed.

Specified by:
  `propertyChange` in interface `PropertyChangeListener`
Parameters:
  `e` - A PropertyChangeEvent object describing the event source and the property that has changed.