javax.swing.plaf.basic

## Class BasicSliderUI

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

Direct Known Subclasses:
  MetalSliderUI

    public class BasicSliderUI
    extends SliderUI

A Basic L&F implementation of SliderUI.

### Nested Class Summary

Nested Classes
`class` `BasicSliderUI.ActionScroller` As of Java 2 platform v1.3 this undocumented class is no longer used.
`class` `BasicSliderUI.ChangeHandler` Data model listener.
`class` `BasicSliderUI.ComponentHandler` Listener for resizing events.
`class` `BasicSliderUI.FocusHandler` Focus-change listener.
`class` `BasicSliderUI.PropertyChangeHandler`
`class` `BasicSliderUI.ScrollListener` Scroll-event listener.
`class` `BasicSliderUI.TrackListener` Track mouse movements.

### Field Summary

Fields
`protected ChangeListener` `changeListener`
`protected ComponentListener` `componentListener`
`protected Rectangle` `contentRect`
`protected Insets` `focusInsets`
`protected FocusListener` `focusListener`
`protected Rectangle` `focusRect`
`protected Insets` `insetCache`
`protected Rectangle` `labelRect`
`protected boolean` `leftToRightCache`
`static int` `MAX_SCROLL`
`static int` `MIN_SCROLL`
`static int` `NEGATIVE_SCROLL`
`static int` `POSITIVE_SCROLL`
`protected PropertyChangeListener` `propertyChangeListener`
`protected BasicSliderUI.ScrollListener` `scrollListener`
`protected Timer` `scrollTimer`
`protected JSlider` `slider`
`protected Rectangle` `thumbRect`
`protected Rectangle` `tickRect`
`protected int` `trackBuffer`
`protected BasicSliderUI.TrackListener` `trackListener`
`protected Rectangle` `trackRect`

### Constructor Summary

Constructors
Constructor and Description
`BasicSliderUI(JSlider b)`

### Method Summary

Methods
`protected void` `calculateContentRect()`
`protected void` `calculateFocusRect()`
`protected void` `calculateGeometry()`
`protected void` `calculateLabelRect()`
`protected void` `calculateThumbLocation()`
`protected void` `calculateThumbSize()`
`protected void` `calculateTickRect()`
`protected void` `calculateTrackBuffer()`
`protected void` `calculateTrackRect()`
`protected ChangeListener` `createChangeListener(JSlider slider)`
`protected ComponentListener` `createComponentListener(JSlider slider)`
`protected FocusListener` `createFocusListener(JSlider slider)`
`protected PropertyChangeListener` `createPropertyChangeListener(JSlider slider)`
`protected BasicSliderUI.ScrollListener` `createScrollListener(JSlider slider)`
`protected BasicSliderUI.TrackListener` `createTrackListener(JSlider slider)`
`static ComponentUI` `createUI(JComponent b)`
`protected boolean` `drawInverted()`
`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 Color` `getFocusColor()`
`protected int` `getHeightOfHighValueLabel()`
`protected int` `getHeightOfLowValueLabel()`
`protected int` `getHeightOfTallestLabel()`
`protected Integer` `getHighestValue()` Returns the biggest value that has an entry in the label table.
`protected Component` `getHighestValueLabel()` Returns the label that corresponds to the lowest slider value in the label table.
`protected Color` `getHighlightColor()`
`protected Integer` `getLowestValue()` Returns the smallest value that has an entry in the label table.
`protected Component` `getLowestValueLabel()` Returns the label that corresponds to the highest slider value in the label table.
`Dimension` `getMaximumSize(JComponent c)` Returns the specified component's maximum size appropriate for the look and feel.
`Dimension` `getMinimumHorizontalSize()`
`Dimension` `getMinimumSize(JComponent c)` Returns the specified component's minimum size appropriate for the look and feel.
`Dimension` `getMinimumVerticalSize()`
`Dimension` `getPreferredHorizontalSize()`
`Dimension` `getPreferredSize(JComponent c)` Returns the specified component's preferred size appropriate for the look and feel.
`Dimension` `getPreferredVerticalSize()`
`protected Color` `getShadowColor()`
`protected Dimension` `getThumbSize()`
`protected int` `getTickLength()` Gets the height of the tick area for horizontal sliders and the width of the tick area for vertical sliders.
`protected int` `getWidthOfHighValueLabel()`
`protected int` `getWidthOfLowValueLabel()`
`protected int` `getWidthOfWidestLabel()`
`protected void` `installDefaults(JSlider slider)`
`protected void` `installKeyboardActions(JSlider slider)`
`protected void` `installListeners(JSlider slider)`
`void` `installUI(JComponent c)` Configures the specified component appropriate for the look and feel.
`protected boolean` `isDragging()` Returns true if the user is dragging the slider.
`protected boolean` `labelsHaveSameBaselines()` Returns true if all the labels from the label table have the same baseline.
`void` `paint(Graphics g, JComponent c)` Paints the specified component appropriate for the look and feel.
`void` `paintFocus(Graphics g)`
`protected void` `paintHorizontalLabel(Graphics g, int value, Component label)` Called for every label in the label table.
`void` `paintLabels(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` `paintTicks(Graphics g)`
`void` `paintTrack(Graphics g)`
`protected void` `paintVerticalLabel(Graphics g, int value, Component label)` Called for every label in the label table.
`protected void` `recalculateIfInsetsChanged()`
`protected void` `recalculateIfOrientationChanged()`
`void` `scrollByBlock(int direction)`
`void` `scrollByUnit(int direction)`
`protected void` `scrollDueToClickInTrack(int dir)` This function is called when a mousePressed was detected in the track, not in the thumb.
`void` `setThumbLocation(int x, int y)`
`protected void` `uninstallKeyboardActions(JSlider slider)`
`protected void` `uninstallListeners(JSlider slider)`
`void` `uninstallUI(JComponent c)` Reverses configuration which was done on the specified component during `installUI`.
`int` `valueForXPosition(int xPos)` Returns a value give an x position.
`int` `valueForYPosition(int yPos)` Returns a value give a y position.
`protected int` `xPositionForValue(int value)`
`protected int` `yPositionForValue(int value)`
`protected int` `yPositionForValue(int value, int trackY, int trackHeight)` Returns the y location for the specified value.

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

#### POSITIVE_SCROLL

    public static final int POSITIVE_SCROLL

See Also:
  Constant Field Values

#### NEGATIVE_SCROLL

    public static final int NEGATIVE_SCROLL

See Also:
  Constant Field Values

#### MIN_SCROLL

    public static final int MIN_SCROLL

See Also:
  Constant Field Values

#### MAX_SCROLL

    public static final int MAX_SCROLL

See Also:
  Constant Field Values

#### scrollTimer

    protected Timer scrollTimer

#### slider

    protected JSlider slider

#### focusInsets

    protected Insets focusInsets

#### insetCache

    protected Insets insetCache

#### leftToRightCache

    protected boolean leftToRightCache

#### focusRect

    protected Rectangle focusRect

#### contentRect

    protected Rectangle contentRect

#### labelRect

    protected Rectangle labelRect

#### tickRect

    protected Rectangle tickRect

#### trackRect

    protected Rectangle trackRect

#### thumbRect

    protected Rectangle thumbRect

#### trackBuffer

    protected int trackBuffer

#### trackListener

    protected BasicSliderUI.TrackListener trackListener

#### changeListener

    protected ChangeListener changeListener

#### componentListener

    protected ComponentListener componentListener

#### focusListener

    protected FocusListener focusListener

#### scrollListener

    protected BasicSliderUI.ScrollListener scrollListener

#### propertyChangeListener

    protected PropertyChangeListener propertyChangeListener

### Constructor Detail

#### BasicSliderUI

    public BasicSliderUI(JSlider b)

### Method Detail

#### getShadowColor

    protected Color getShadowColor()

#### getHighlightColor

    protected Color getHighlightColor()

#### getFocusColor

    protected Color getFocusColor()

#### isDragging

    protected boolean isDragging()

Returns true if the user is dragging the slider.

Returns:
  true if the user is dragging the slider
Since:
  1.5

#### createUI

    public static ComponentUI createUI(JComponent b)

#### installUI

    public void installUI(JComponent c)

Description copied from class: `ComponentUI`
Configures the specified component appropriate 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 any 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 `ComponentUI`
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()`

#### uninstallUI

    public void uninstallUI(JComponent c)

Description copied from class: `ComponentUI`
Reverses configuration which was done on the specified component during `installUI`. This method is invoked when this `UIComponent` instance is being removed as the UI delegate for the specified component. This method should undo the configuration performed in `installUI`, being careful to leave the `JComponent` instance in a clean state (no extraneous listeners, look-and-feel-specific property objects, etc.). This should include the following:

1. Remove any UI-set borders from the component.
2. Remove any UI-set layout managers on the component.
3. Remove any UI-added sub-components from the component.
4. Remove any UI-added event/property listeners from the component.
5. Remove any UI-installed keyboard UI from the component.
6. Nullify any allocated instance data objects to allow for GC.

Overrides:
  `uninstallUI` in class `ComponentUI`
Parameters:
  `c` - the component from which this UI delegate is being removed; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
See Also:
  `ComponentUI.installUI(javax.swing.JComponent)`, `JComponent.updateUI()`

#### installDefaults

    protected void installDefaults(JSlider slider)

#### createTrackListener

    protected BasicSliderUI.TrackListener createTrackListener(JSlider slider)

#### createChangeListener

    protected ChangeListener createChangeListener(JSlider slider)

#### createComponentListener

    protected ComponentListener createComponentListener(JSlider slider)

#### createFocusListener

    protected FocusListener createFocusListener(JSlider slider)

#### createScrollListener

    protected BasicSliderUI.ScrollListener createScrollListener(JSlider slider)

#### createPropertyChangeListener

    protected PropertyChangeListener createPropertyChangeListener(JSlider slider)

#### installListeners

    protected void installListeners(JSlider slider)

#### uninstallListeners

    protected void uninstallListeners(JSlider slider)

#### installKeyboardActions

    protected void installKeyboardActions(JSlider slider)

#### uninstallKeyboardActions

    protected void uninstallKeyboardActions(JSlider slider)

#### getBaseline

    public int getBaseline(JComponent c,
                  int width,
                  int height)

Returns the baseline.

Overrides:
  `getBaseline` in class `ComponentUI`
Parameters:
  `c` - `JComponent` baseline is being requested for
  `width` - the width to get the baseline for
  `height` - the height to get the baseline for
Returns:
  baseline or a value < 0 indicating there is no reasonable baseline
Throws:
  `NullPointerException` - if `c` is `null`
  `IllegalArgumentException` - if width or height is < 0
Since:
  1.6
See Also:
  `JComponent.getBaseline(int, int)`

#### getBaselineResizeBehavior

    public Component.BaselineResizeBehavior getBaselineResizeBehavior(JComponent c)

Returns an enum indicating how the baseline of the component changes as the size changes.

Overrides:
  `getBaselineResizeBehavior` in class `ComponentUI`
Parameters:
  `c` - `JComponent` to return baseline resize behavior for
Returns:
  an enum indicating how the baseline changes as the component size changes
Throws:
  `NullPointerException` - if `c` is `null`
Since:
  1.6
See Also:
  `JComponent.getBaseline(int, int)`

#### labelsHaveSameBaselines

    protected boolean labelsHaveSameBaselines()

Returns true if all the labels from the label table have the same baseline.

Returns:
  true if all the labels from the label table have the same baseline
Since:
  1.6

#### getPreferredHorizontalSize

    public Dimension getPreferredHorizontalSize()

#### getPreferredVerticalSize

    public Dimension getPreferredVerticalSize()

#### getMinimumHorizontalSize

    public Dimension getMinimumHorizontalSize()

#### getMinimumVerticalSize

    public Dimension getMinimumVerticalSize()

#### getPreferredSize

    public Dimension getPreferredSize(JComponent c)

Description copied from class: `ComponentUI`
Returns the specified component's preferred size appropriate for the look and feel. If `null` is returned, the preferred size will be calculated by the component's layout manager instead (this is the preferred approach for any component with a specific layout manager installed). The default implementation of this method returns `null`.

Overrides:
  `getPreferredSize` in class `ComponentUI`
Parameters:
  `c` - the component whose preferred size is being queried; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
See Also:
  `JComponent.getPreferredSize()`, `LayoutManager.preferredLayoutSize(java.awt.Container)`

#### getMinimumSize

    public Dimension getMinimumSize(JComponent c)

Description copied from class: `ComponentUI`
Returns the specified component's minimum size appropriate for the look and feel. If `null` is returned, the minimum size will be calculated by the component's layout manager instead (this is the preferred approach for any component with a specific layout manager installed). The default implementation of this method invokes `getPreferredSize` and returns that value.

Overrides:
  `getMinimumSize` in class `ComponentUI`
Parameters:
  `c` - the component whose minimum size is being queried; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
Returns:
  a `Dimension` object or `null`
See Also:
  `JComponent.getMinimumSize()`, `LayoutManager.minimumLayoutSize(java.awt.Container)`, `ComponentUI.getPreferredSize(javax.swing.JComponent)`

#### getMaximumSize

    public Dimension getMaximumSize(JComponent c)

Description copied from class: `ComponentUI`
Returns the specified component's maximum size appropriate for the look and feel. If `null` is returned, the maximum size will be calculated by the component's layout manager instead (this is the preferred approach for any component with a specific layout manager installed). The default implementation of this method invokes `getPreferredSize` and returns that value.

Overrides:
  `getMaximumSize` in class `ComponentUI`
Parameters:
  `c` - the component whose maximum size is being queried; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
Returns:
  a `Dimension` object or `null`
See Also:
  `JComponent.getMaximumSize()`, `LayoutManager2.maximumLayoutSize(java.awt.Container)`

#### calculateGeometry

    protected void calculateGeometry()

#### calculateFocusRect

    protected void calculateFocusRect()

#### calculateThumbSize

    protected void calculateThumbSize()

#### calculateContentRect

    protected void calculateContentRect()

#### calculateThumbLocation

    protected void calculateThumbLocation()

#### calculateTrackBuffer

    protected void calculateTrackBuffer()

#### calculateTrackRect

    protected void calculateTrackRect()

#### getTickLength

    protected 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. If you want to give your ticks some room, make this larger than you need and paint your ticks away from the sides in paintTicks().

#### calculateTickRect

    protected void calculateTickRect()

#### calculateLabelRect

    protected void calculateLabelRect()

#### getThumbSize

    protected Dimension getThumbSize()

#### getWidthOfWidestLabel

    protected int getWidthOfWidestLabel()

#### getHeightOfTallestLabel

    protected int getHeightOfTallestLabel()

#### getWidthOfHighValueLabel

    protected int getWidthOfHighValueLabel()

#### getWidthOfLowValueLabel

    protected int getWidthOfLowValueLabel()

#### getHeightOfHighValueLabel

    protected int getHeightOfHighValueLabel()

#### getHeightOfLowValueLabel

    protected int getHeightOfLowValueLabel()

#### drawInverted

    protected boolean drawInverted()

#### getHighestValue

    protected Integer getHighestValue()

Returns the biggest value that has an entry in the label table.

Returns:
  biggest value that has an entry in the label table, or null.
Since:
  1.6

#### getLowestValue

    protected Integer getLowestValue()

Returns the smallest value that has an entry in the label table.

Returns:
  smallest value that has an entry in the label table, or null.
Since:
  1.6

#### getLowestValueLabel

    protected Component getLowestValueLabel()

Returns the label that corresponds to the highest slider value in the label table.

See Also:
  `JSlider.setLabelTable(java.util.Dictionary)`

#### getHighestValueLabel

    protected Component getHighestValueLabel()

Returns the label that corresponds to the lowest slider value in the label table.

See Also:
  `JSlider.setLabelTable(java.util.Dictionary)`

#### paint

    public void paint(Graphics g,
             JComponent c)

Description copied from class: `ComponentUI`
Paints the specified component appropriate for the look and feel. This method is invoked from the `ComponentUI.update` method when the specified component is being painted. Subclasses should override this method and use the specified `Graphics` object to render the content of the component.

Overrides:
  `paint` in class `ComponentUI`
Parameters:
  `g` - the `Graphics` context in which to paint
  `c` - the component being painted; this argument is often ignored, but might be used if the UI object is stateless and shared by multiple components
See Also:
  `ComponentUI.update(java.awt.Graphics, javax.swing.JComponent)`

#### recalculateIfInsetsChanged

    protected void recalculateIfInsetsChanged()

#### recalculateIfOrientationChanged

    protected void recalculateIfOrientationChanged()

#### paintFocus

    public void paintFocus(Graphics g)

#### paintTrack

    public void paintTrack(Graphics g)

#### paintTicks

    public void paintTicks(Graphics g)

#### paintMinorTickForHorizSlider

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

#### paintMajorTickForHorizSlider

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

#### paintMinorTickForVertSlider

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

#### paintMajorTickForVertSlider

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

#### paintLabels

    public void paintLabels(Graphics g)

#### paintHorizontalLabel

    protected void paintHorizontalLabel(Graphics g,
                            int value,
                            Component label)

Called for every label in the label table. Used to draw the labels for horizontal sliders. The graphics have been translated to labelRect.y already.

See Also:
  `JSlider.setLabelTable(java.util.Dictionary)`

#### paintVerticalLabel

    protected void paintVerticalLabel(Graphics g,
                          int value,
                          Component label)

Called for every label in the label table. Used to draw the labels for vertical sliders. The graphics have been translated to labelRect.x already.

See Also:
  `JSlider.setLabelTable(java.util.Dictionary)`

#### paintThumb

    public void paintThumb(Graphics g)

#### setThumbLocation

    public void setThumbLocation(int x,
                        int y)

#### scrollByBlock

    public void scrollByBlock(int direction)

#### scrollByUnit

    public void scrollByUnit(int direction)

#### scrollDueToClickInTrack

    protected void scrollDueToClickInTrack(int dir)

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.

#### xPositionForValue

    protected int xPositionForValue(int value)

#### yPositionForValue

    protected int yPositionForValue(int value)

#### yPositionForValue

    protected int yPositionForValue(int value,
                        int trackY,
                        int trackHeight)

Returns the y location for the specified value. No checking is done on the arguments. In particular if `trackHeight` is negative undefined results may occur.

Parameters:
  `value` - the slider value to get the location for
  `trackY` - y-origin of the track
  `trackHeight` - the height of the track
Since:
  1.6

#### valueForYPosition

    public int valueForYPosition(int yPos)

Returns a value give a y position. If yPos is past the track at the top or the bottom it will set the value to the min or max of the slider, depending if the slider is inverted or not.

#### valueForXPosition

    public int valueForXPosition(int xPos)

Returns a value give an x position. If xPos is past the track at the left or the right it will set the value to the min or max of the slider, depending if the slider is inverted or not.

Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.