javax.swing.plaf.basic
Class BasicSliderUI

java.lang.Object
  extended by javax.swing.plaf.ComponentUI
      extended by javax.swing.plaf.SliderUI
          extended by javax.swing.plaf.basic.BasicSliderUI
Direct Known Subclasses:
MetalSliderUI

public class BasicSliderUI
extends SliderUI

BasicSliderUI.java This is the UI delegate in the Basic look and feel that paints JSliders.

The UI delegate keeps track of 6 rectangles that place the various parts of the JSlider inside the component.

The rectangles are organized as follows:

     +-------------------------------------------------------+ <-- focusRect
     |                                                       |
     |  +==+-------------------+==+--------------------+==+<------ contentRect
     |  |  |                   |  |<---thumbRect       |  |  |
     |  |  |    TRACK          |  |                    |<--------- trackRect
     |  |  +-------------------+==+--------------------+  |  |
     |  |  |                                           |  |  |
     |  |  |          TICKS GO HERE                    |<-------- tickRect
     |  |  |                                           |  |  |
     |  +==+-------------------------------------------+==+  |
     |  |  |                                           |  |  |
     |  |  |                                           |  |<----- labelRect
     |  |  |                 LABELS GO HERE            |  |  |
     |  |  |                                           |  |  |
     |  |  |                                           |  |  |
     |  |  |                                           |  |  |
     |  |  |                                           |  |  |
     |  |                                              |  |  |
 

The space between the contentRect and the focusRect are the FocusInsets.

The space between the focusRect and the component bounds is the insetCache which are the component's insets.

The top of the thumb is the top of the contentRect. The trackRect has to be as tall as the thumb.

The trackRect and tickRect do not start from the left edge of the focusRect. They are trackBuffer away from each side of the focusRect. This is so that the thumb has room to move.

The labelRect does start right against the contentRect's left and right edges and it gets all remaining space.


Nested Class Summary
 class BasicSliderUI.ActionScroller
          This class is no longer used as of JDK1.3.
 class BasicSliderUI.ChangeHandler
          Helper class that listens to the JSlider's model for changes.
 class BasicSliderUI.ComponentHandler
          Helper class that listens for resize events.
 class BasicSliderUI.FocusHandler
          Helper class that listens for focus events.
 class BasicSliderUI.PropertyChangeHandler
          Helper class that listens for changes to the properties of the JSlider.
 class BasicSliderUI.ScrollListener
          Helper class that listens to our swing timer.
 class BasicSliderUI.TrackListener
          Helper class that listens for mouse events.
 
Field Summary
protected  ChangeListener changeListener
          Listener for changes from the model.
protected  ComponentListener componentListener
          Listener for component resizing.
protected  Rectangle contentRect
          Rectangle describing content bounds.
protected  Insets focusInsets
          The insets between the FocusRectangle and the ContentRectangle.
protected  FocusListener focusListener
          Listener for focus handling.
protected  Rectangle focusRect
          Rectangle describing focus bounds.
protected  Insets insetCache
          The JSlider's insets.
protected  Rectangle labelRect
          Rectangle describing the label bounds.
protected  boolean leftToRightCache
          Whether this slider is actually drawn left to right.
static int MAX_SCROLL
          FIXME: use this somewhere.
static int MIN_SCROLL
          FIXME: use this somewhere.
static int NEGATIVE_SCROLL
          A constant describing scrolling towards the minimum.
static int POSITIVE_SCROLL
          A constant describing scrolling towards the maximum.
protected  PropertyChangeListener propertyChangeListener
          Listener for changes to the JSlider.
protected  BasicSliderUI.ScrollListener scrollListener
          Listener for the scrollTimer.
protected  Timer scrollTimer
          A timer that periodically moves the thumb.
protected  JSlider slider
          A reference to the JSlider that this UI was created for.
protected  Rectangle thumbRect
          Rectangle describing the thumb's bounds.
protected  Rectangle tickRect
          Rectangle describing the tick bounds.
protected  int trackBuffer
          The gap between the edges of the contentRect and trackRect.
protected  BasicSliderUI.TrackListener trackListener
          Listener for mouse events.
protected  Rectangle trackRect
          Rectangle describing the track bounds.
 
Constructor Summary
BasicSliderUI(JSlider b)
          Creates a new Basic look and feel Slider UI.
 
Method Summary
protected  void calculateContentRect()
          Updates the contentRect field to an area inside the focusRect.
protected  void calculateFocusRect()
          This method calculates the size and position of the focusRect.
protected  void calculateGeometry()
          This method calculates all the sizes of the rectangles by delegating to the helper methods calculateXXXRect.
protected  void calculateLabelRect()
          Calculates the labelRect field, taking into account the orientation of the slider.
protected  void calculateThumbLocation()
          Calculates the position of the thumbRect based on the current value of the slider.
protected  void calculateThumbSize()
          Sets the width and height of the thumbRect field, using the dimensions returned by getThumbSize().
protected  void calculateTickRect()
          This method calculates the size and position of the tickRect.
protected  void calculateTrackBuffer()
          Calculates the gap size between the edge of the contentRect and the edge of the trackRect, storing the result in the trackBuffer field.
protected  void calculateTrackRect()
          Calculates the size and position of the trackRect.
protected  ChangeListener createChangeListener(JSlider slider)
          Creates a new ChangeListener.
protected  ComponentListener createComponentListener(JSlider slider)
          Creates a new ComponentListener.
protected  FocusListener createFocusListener(JSlider slider)
          Creates a new FocusListener.
protected  PropertyChangeListener createPropertyChangeListener(JSlider slider)
          Creates a new PropertyChangeListener.
protected  BasicSliderUI.ScrollListener createScrollListener(JSlider slider)
          Creates a new BasicSliderUI.ScrollListener.
protected  BasicSliderUI.TrackListener createTrackListener(JSlider slider)
          Creates a new BasicSliderUI.TrackListener.
static ComponentUI createUI(JComponent b)
          Factory method to create a BasicSliderUI for the given JComponent, which should be a JSlider.
protected  boolean drawInverted()
          Returns true if the slider scale is to be drawn inverted, and false if not.
protected  Color getFocusColor()
          Gets the focus color to be used for this slider.
protected  int getHeightOfHighValueLabel()
          Returns the height of the label whose key has the highest value, or 0 if there are no labels.
protected  int getHeightOfLowValueLabel()
          Returns the height of the label whose key has the lowest value, or 0 if there are no labels.
protected  int getHeightOfTallestLabel()
          This method returns the height of the tallest label in the slider's label table.
protected  Component getHighestValueLabel()
          Returns the label whose key has the highest value.
protected  Color getHighlightColor()
          Gets the highlight color to be used for this slider.
protected  Component getLowestValueLabel()
          This method returns the label whose key has the lowest value.
 Dimension getMaximumSize(JComponent c)
          This method returns the maximum size for this JSlider for this look and feel.
 Dimension getMinimumHorizontalSize()
          This method returns the minimum size when the slider is horizontally oriented.
 Dimension getMinimumSize(JComponent c)
          This method returns the minimum size for this JSlider for this look and feel.
 Dimension getMinimumVerticalSize()
          This method returns the minimum size of the slider when it is vertically oriented.
 Dimension getPreferredHorizontalSize()
          This method returns the preferred size when the slider is horizontally oriented.
 Dimension getPreferredSize(JComponent c)
          This method returns the preferred size of the component.
 Dimension getPreferredVerticalSize()
          This method returns the preferred size when the slider is vertically oriented.
protected  Color getShadowColor()
          Gets the shadow color to be used for this slider.
protected  Dimension getThumbSize()
          Returns the size of the slider's thumb.
protected  int getTickLength()
          This method returns the height of the tick area box if the slider is horizontal and the width of the tick area box is the slider is vertical.
protected  int getWidthOfHighValueLabel()
          Returns the width of the label whose key has the highest value, or 0 if there are no labels.
protected  int getWidthOfLowValueLabel()
          Returns the width of the label whose key has the lowest value, or 0 if there are no labels.
protected  int getWidthOfWidestLabel()
          This method returns the width of the widest label in the slider's label table.
protected  void installDefaults(JSlider slider)
          Initializes any default properties that this UI has from the defaults for the Basic look and feel.
protected  void installKeyboardActions(JSlider slider)
          Installs any keyboard actions.
protected  void installListeners(JSlider slider)
          Creates and registers all the listeners for this UI delegate.
 void installUI(JComponent c)
          Installs and initializes all fields for this UI delegate.
protected  boolean isDragging()
          Returns true if the user is dragging the slider.
 void paint(Graphics g, JComponent c)
          This method is used to paint the JSlider.
 void paintFocus(Graphics g)
          This method is called during a repaint if the slider has focus.
protected  void paintHorizontalLabel(Graphics g, int value, Component label)
          This method paints the label on the horizontal slider at the value specified.
 void paintLabels(Graphics g)
          This method paints all the labels from the slider's label table.
protected  void paintMajorTickForHorizSlider(Graphics g, Rectangle tickBounds, int x)
          This method paints a major tick for a horizontal slider at the given x value. x represents the x coordinate to paint at.
protected  void paintMajorTickForVertSlider(Graphics g, Rectangle tickBounds, int y)
          This method paints a major tick for a vertical slider at the given y value. y represents the y coordinate to paint at.
protected  void paintMinorTickForHorizSlider(Graphics g, Rectangle tickBounds, int x)
          This method paints a minor tick for a horizontal slider at the given x value. x represents the x coordinate to paint at.
protected  void paintMinorTickForVertSlider(Graphics g, Rectangle tickBounds, int y)
          This method paints a minor tick for a vertical slider at the given y value. y represents the y coordinate to paint at.
 void paintThumb(Graphics g)
           This method paints a thumb.
 void paintTicks(Graphics g)
          This method is called during a repaint if the ticks are to be drawn.
 void paintTrack(Graphics g)
           This method is called during a repaint if the track is to be drawn.
protected  void paintVerticalLabel(Graphics g, int value, Component label)
          This method paints the label on the vertical slider at the value specified.
protected  void recalculateIfInsetsChanged()
          This method recalculates any rectangles that need to be recalculated after the insets of the component have changed.
protected  void recalculateIfOrientationChanged()
          This method recalculates any rectangles that need to be recalculated after the orientation of the slider changes.
 void scrollByBlock(int direction)
          Moves the thumb one block in the direction specified (a block is 1/10th of the slider range).
 void scrollByUnit(int direction)
          Moves the thumb one unit in the specified direction.
protected  void scrollDueToClickInTrack(int dir)
          This method is called when there has been a click in the track and the thumb needs to be scrolled on regular intervals.
 void setThumbLocation(int x, int y)
          This method sets the position of the thumbRect.
protected  void uninstallKeyboardActions(JSlider slider)
          Uninstalls any keyboard actions.
protected  void uninstallListeners(JSlider slider)
          Unregisters all the listeners that this UI delegate was using.
 void uninstallUI(JComponent c)
          Performs the opposite of installUI.
 int valueForXPosition(int xPos)
          This method returns the value in the slider's range given the x coordinate.
 int valueForYPosition(int yPos)
          This method returns the value in the slider's range given the y coordinate.
protected  int xPositionForValue(int value)
          Returns the x-coordinate (relative to the component) for the given slider value.
protected  int yPositionForValue(int value)
          Returns the y-coordinate (relative to the component) for the given slider 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

changeListener

protected ChangeListener changeListener
Listener for changes from the model.


propertyChangeListener

protected PropertyChangeListener propertyChangeListener
Listener for changes to the JSlider.


scrollListener

protected BasicSliderUI.ScrollListener scrollListener
Listener for the scrollTimer.


componentListener

protected ComponentListener componentListener
Listener for component resizing.


focusListener

protected FocusListener focusListener
Listener for focus handling.


trackListener

protected BasicSliderUI.TrackListener trackListener
Listener for mouse events.


focusInsets

protected Insets focusInsets
The insets between the FocusRectangle and the ContentRectangle.


insetCache

protected Insets insetCache
The JSlider's insets.


contentRect

protected Rectangle contentRect
Rectangle describing content bounds. See diagram above.


focusRect

protected Rectangle focusRect
Rectangle describing focus bounds. See diagram above.


thumbRect

protected Rectangle thumbRect
Rectangle describing the thumb's bounds. See diagram above.


tickRect

protected Rectangle tickRect
Rectangle describing the tick bounds. See diagram above.


labelRect

protected Rectangle labelRect
Rectangle describing the label bounds. See diagram above.


trackRect

protected Rectangle trackRect
Rectangle describing the track bounds. See diagram above.


MAX_SCROLL

public static final int MAX_SCROLL
FIXME: use this somewhere.

See Also:
Constant Field Values

MIN_SCROLL

public static final int MIN_SCROLL
FIXME: use this somewhere.

See Also:
Constant Field Values

NEGATIVE_SCROLL

public static final int NEGATIVE_SCROLL
A constant describing scrolling towards the minimum.

See Also:
Constant Field Values

POSITIVE_SCROLL

public static final int POSITIVE_SCROLL
A constant describing scrolling towards the maximum.

See Also:
Constant Field Values

trackBuffer

protected int trackBuffer
The gap between the edges of the contentRect and trackRect.


leftToRightCache

protected boolean leftToRightCache
Whether this slider is actually drawn left to right.


scrollTimer

protected Timer scrollTimer
A timer that periodically moves the thumb.


slider

protected JSlider slider
A reference to the JSlider that this UI was created for.

Constructor Detail

BasicSliderUI

public BasicSliderUI(JSlider b)
Creates a new Basic look and feel Slider UI.

Parameters:
b - The JSlider that this UI was created for.
Method Detail

isDragging

protected boolean isDragging()
Returns true if the user is dragging the slider.

Returns:
true if the slider is being dragged.
Since:
1.5

getShadowColor

protected Color getShadowColor()
Gets the shadow color to be used for this slider. The shadow color is the color used for drawing the top and left edges of the track.

Returns:
The shadow color.

getHighlightColor

protected Color getHighlightColor()
Gets the highlight color to be used for this slider. The highlight color is the color used for drawing the bottom and right edges of the track.

Returns:
The highlight color.

getFocusColor

protected Color getFocusColor()
Gets the focus color to be used for this slider. The focus color is the color used for drawing the focus rectangle when the component gains focus.

Returns:
The focus color.

createUI

public static ComponentUI createUI(JComponent b)
Factory method to create a BasicSliderUI for the given JComponent, which should be a JSlider.

Parameters:
b - The JComponent a UI is being created for.
Returns:
A BasicSliderUI for the JComponent.

installUI

public void installUI(JComponent c)
Installs and initializes all fields for this UI delegate. Any properties of the UI that need to be initialized and/or set to defaults will be done now. It will also install any listeners necessary.

Overrides:
installUI in class ComponentUI
Parameters:
c - The JComponent that is having this UI installed.
See Also:
ComponentUI.uninstallUI(javax.swing.JComponent), JComponent.setUI(javax.swing.plaf.ComponentUI), JComponent.updateUI()

uninstallUI

public void uninstallUI(JComponent c)
Performs the opposite of installUI. Any properties or resources that need to be cleaned up will be done now. It will also uninstall any listeners it has. In addition, any properties of this UI will be nulled.

Overrides:
uninstallUI in class ComponentUI
Parameters:
c - The JComponent that is having this UI uninstalled.
See Also:
ComponentUI.installUI(javax.swing.JComponent), JComponent.setUI(javax.swing.plaf.ComponentUI), JComponent.updateUI()

installDefaults

protected void installDefaults(JSlider slider)
Initializes any default properties that this UI has from the defaults for the Basic look and feel.

Parameters:
slider - The JSlider that is having this UI installed.

createTrackListener

protected BasicSliderUI.TrackListener createTrackListener(JSlider slider)
Creates a new BasicSliderUI.TrackListener.

Parameters:
slider - The JSlider that this BasicSliderUI.TrackListener is created for.
Returns:
A new BasicSliderUI.TrackListener.

createChangeListener

protected ChangeListener createChangeListener(JSlider slider)
Creates a new ChangeListener.

Parameters:
slider - The JSlider that this ChangeListener is created for.
Returns:
A new ChangeListener.

createComponentListener

protected ComponentListener createComponentListener(JSlider slider)
Creates a new ComponentListener.

Parameters:
slider - The JSlider that this ComponentListener is created for.
Returns:
A new ComponentListener.

createFocusListener

protected FocusListener createFocusListener(JSlider slider)
Creates a new FocusListener.

Parameters:
slider - The JSlider that this FocusListener is created for.
Returns:
A new FocusListener.

createScrollListener

protected BasicSliderUI.ScrollListener createScrollListener(JSlider slider)
Creates a new BasicSliderUI.ScrollListener.

Parameters:
slider - The JSlider that this BasicSliderUI.ScrollListener is created for.
Returns:
A new BasicSliderUI.ScrollListener.

createPropertyChangeListener

protected PropertyChangeListener createPropertyChangeListener(JSlider slider)
Creates a new PropertyChangeListener.

Parameters:
slider - The JSlider that this PropertyChangeListener is created for.
Returns:
A new PropertyChangeListener.

installListeners

protected void installListeners(JSlider slider)
Creates and registers all the listeners for this UI delegate. This includes creating the ScrollListener and registering it to the timer.

Parameters:
slider - The JSlider is having listeners installed.

uninstallListeners

protected void uninstallListeners(JSlider slider)
Unregisters all the listeners that this UI delegate was using. In addition, it will also null any listeners that it was using.

Parameters:
slider - The JSlider that is having listeners removed.

installKeyboardActions

protected void installKeyboardActions(JSlider slider)
Installs any keyboard actions. The list of keys that need to be bound are listed in Basic look and feel's defaults.

Parameters:
slider - The JSlider that is having keyboard actions installed.

uninstallKeyboardActions

protected void uninstallKeyboardActions(JSlider slider)
Uninstalls any keyboard actions. The list of keys used are listed in Basic look and feel's defaults.

Parameters:
slider - The JSlider that is having keyboard actions uninstalled.

getPreferredHorizontalSize

public Dimension getPreferredHorizontalSize()
This method returns the preferred size when the slider is horizontally oriented.

Returns:
The dimensions of the preferred horizontal size.

getPreferredVerticalSize

public Dimension getPreferredVerticalSize()
This method returns the preferred size when the slider is vertically oriented.

Returns:
The dimensions of the preferred vertical size.

getMinimumHorizontalSize

public Dimension getMinimumHorizontalSize()
This method returns the minimum size when the slider is horizontally oriented.

Returns:
The dimensions of the minimum horizontal size.

getMinimumVerticalSize

public Dimension getMinimumVerticalSize()
This method returns the minimum size of the slider when it is vertically oriented.

Returns:
The dimensions of the minimum vertical size.

getPreferredSize

public Dimension getPreferredSize(JComponent c)
This method returns the preferred size of the component. If it returns null, then it is up to the Layout Manager to give the JComponent a size.

Overrides:
getPreferredSize in class ComponentUI
Parameters:
c - The JComponent to find the preferred size for.
Returns:
The dimensions of the preferred size.

getMinimumSize

public Dimension getMinimumSize(JComponent c)
This method returns the minimum size for this JSlider for this look and feel. If it returns null, then it is up to the Layout Manager to give the JComponent a size.

Overrides:
getMinimumSize in class ComponentUI
Parameters:
c - The JComponent to find the minimum size for.
Returns:
The dimensions of the minimum size.

getMaximumSize

public Dimension getMaximumSize(JComponent c)
This method returns the maximum size for this JSlider for this look and feel.

Overrides:
getMaximumSize in class ComponentUI
Parameters:
c - The JComponent to find a maximum size for.
Returns:
The dimensions of the maximum size.

calculateGeometry

protected void calculateGeometry()
This method calculates all the sizes of the rectangles by delegating to the helper methods calculateXXXRect.


calculateFocusRect

protected void calculateFocusRect()
This method calculates the size and position of the focusRect. This method does not need to be called if the orientation changes.


calculateThumbSize

protected void calculateThumbSize()
Sets the width and height of the thumbRect field, using the dimensions returned by getThumbSize().


calculateContentRect

protected void calculateContentRect()
Updates the contentRect field to an area inside the focusRect. This method does not need to be called if the orientation changes.


calculateThumbLocation

protected void calculateThumbLocation()
Calculates the position of the thumbRect based on the current value of the slider. It must take into account the orientation of the slider.


calculateTrackBuffer

protected void calculateTrackBuffer()
Calculates the gap size between the edge of the contentRect and the edge of the trackRect, storing the result in the trackBuffer field. Sufficient space needs to be reserved for the slider thumb and/or the labels at each end of the slider track.


getThumbSize

protected Dimension getThumbSize()
Returns the size of the slider's thumb. The size is hard coded to 11 x 20 for horizontal sliders, and 20 x 11 for vertical sliders. Note that a new instance of Dimension is returned for every call to this method (this seems wasteful, but Dimension instances are not immutable, so this is probably unavoidable).

Returns:
The size of the slider's thumb.

calculateTrackRect

protected void calculateTrackRect()
Calculates the size and position of the trackRect. It must take into account the orientation of the slider.


getTickLength

protected int getTickLength()
This method returns the height of the tick area box if the slider is horizontal and the width of the tick area box is the slider is vertical. It not necessarily how long the ticks will be. If a gap between the edge of tick box and the actual tick is desired, then that will need to be handled in the tick painting methods.

Returns:
The height (or width if the slider is vertical) of the tick rectangle.

calculateTickRect

protected void calculateTickRect()
This method calculates the size and position of the tickRect. It must take into account the orientation of the slider.


calculateLabelRect

protected void calculateLabelRect()
Calculates the labelRect field, taking into account the orientation of the slider.


getWidthOfWidestLabel

protected int getWidthOfWidestLabel()
This method returns the width of the widest label in the slider's label table.

Returns:
The width of the widest label or 0 if no label table exists.

getHeightOfTallestLabel

protected int getHeightOfTallestLabel()
This method returns the height of the tallest label in the slider's label table.

Returns:
The height of the tallest label or 0 if no label table exists.

getWidthOfHighValueLabel

protected int getWidthOfHighValueLabel()
Returns the width of the label whose key has the highest value, or 0 if there are no labels.

Returns:
The width of the label whose key has the highest value.
See Also:
getHighestValueLabel()

getWidthOfLowValueLabel

protected int getWidthOfLowValueLabel()
Returns the width of the label whose key has the lowest value, or 0 if there are no labels.

Returns:
The width of the label whose key has the lowest value.
See Also:
getLowestValueLabel()

getHeightOfHighValueLabel

protected int getHeightOfHighValueLabel()
Returns the height of the label whose key has the highest value, or 0 if there are no labels.

Returns:
The height of the high value label or 0 if no label table exists.

getHeightOfLowValueLabel

protected int getHeightOfLowValueLabel()
Returns the height of the label whose key has the lowest value, or 0 if there are no labels.

Returns:
The height of the low value label or 0 if no label table exists.

drawInverted

protected boolean drawInverted()
Returns true if the slider scale is to be drawn inverted, and false if not.

Returns:
true if the slider is to be drawn inverted.

getLowestValueLabel

protected Component getLowestValueLabel()
This method returns the label whose key has the lowest value.

Returns:
The low value label or null if no label table exists.

getHighestValueLabel

protected Component getHighestValueLabel()
Returns the label whose key has the highest value.

Returns:
The label whose key has the highest value or null if no label table exists.

paint

public void paint(Graphics g,
                  JComponent c)
This method is used to paint the JSlider. It delegates all its duties to the various paint methods like paintTicks(), paintTrack(), paintThumb(), etc.

Overrides:
paint in class ComponentUI
Parameters:
g - The Graphics object to paint with.
c - The JComponent that is being painted.

recalculateIfInsetsChanged

protected void recalculateIfInsetsChanged()
This method recalculates any rectangles that need to be recalculated after the insets of the component have changed.


recalculateIfOrientationChanged

protected void recalculateIfOrientationChanged()
This method recalculates any rectangles that need to be recalculated after the orientation of the slider changes.


paintFocus

public void paintFocus(Graphics g)
This method is called during a repaint if the slider has focus. It draws an outline of the focusRect using the color returned by getFocusColor().

Parameters:
g - The Graphics object to draw with.

paintTrack

public void paintTrack(Graphics g)

This method is called during a repaint if the track is to be drawn. It draws a 3D rectangle to represent the track. The track is not the size of the trackRect. The top and left edges of the track should be outlined with the shadow color. The bottom and right edges should be outlined with the highlight color.

    a---d   
    |   |   
    |   |   a------------------------d
    |   |   |                        |
    |   |   b------------------------c
    |   |
    |   |   
    b---c
 

The b-a-d path needs to be drawn with the shadow color and the b-c-d path needs to be drawn with the highlight color.

Parameters:
g - The Graphics object to draw with.

paintTicks

public void paintTicks(Graphics g)
This method is called during a repaint if the ticks are to be drawn. This method must still verify that the majorTickSpacing and minorTickSpacing are greater than zero before drawing the ticks.

Parameters:
g - The Graphics object to draw with.

paintMinorTickForHorizSlider

protected void paintMinorTickForHorizSlider(Graphics g,
                                            Rectangle tickBounds,
                                            int x)
This method paints a minor tick for a horizontal slider at the given x value. x represents the x coordinate to paint at.

Parameters:
g - The Graphics object to draw with.
tickBounds - The tickRect rectangle.
x - The x coordinate to draw the tick at.

paintMajorTickForHorizSlider

protected void paintMajorTickForHorizSlider(Graphics g,
                                            Rectangle tickBounds,
                                            int x)
This method paints a major tick for a horizontal slider at the given x value. x represents the x coordinate to paint at.

Parameters:
g - The Graphics object to draw with.
tickBounds - The tickRect rectangle.
x - The x coordinate to draw the tick at.

paintMinorTickForVertSlider

protected void paintMinorTickForVertSlider(Graphics g,
                                           Rectangle tickBounds,
                                           int y)
This method paints a minor tick for a vertical slider at the given y value. y represents the y coordinate to paint at.

Parameters:
g - The Graphics object to draw with.
tickBounds - The tickRect rectangle.
y - The y coordinate to draw the tick at.

paintMajorTickForVertSlider

protected void paintMajorTickForVertSlider(Graphics g,
                                           Rectangle tickBounds,
                                           int y)
This method paints a major tick for a vertical slider at the given y value. y represents the y coordinate to paint at.

Parameters:
g - The Graphics object to draw with.
tickBounds - The tickRect rectangle.
y - The y coordinate to draw the tick at.

paintLabels

public void paintLabels(Graphics g)
This method paints all the labels from the slider's label table. This method must make sure that the label table is not null before painting the labels. Each entry in the label table is a (integer, component) pair. Every label is painted at the value of the integer.

Parameters:
g - The Graphics object to draw with.

paintHorizontalLabel

protected void paintHorizontalLabel(Graphics g,
                                    int value,
                                    Component label)
This method paints the label on the horizontal slider at the value specified. The value is not a coordinate. It is a value within the range of the slider. If the value is not within the range of the slider, this method will do nothing. This method should not paint outside the boundaries of the labelRect.

Parameters:
g - The Graphics object to draw with.
value - The value to paint at.
label - The label to paint.

paintVerticalLabel

protected void paintVerticalLabel(Graphics g,
                                  int value,
                                  Component label)
This method paints the label on the vertical slider at the value specified. The value is not a coordinate. It is a value within the range of the slider. If the value is not within the range of the slider, this method will do nothing. This method should not paint outside the boundaries of the labelRect.

Parameters:
g - The Graphics object to draw with.
value - The value to paint at.
label - The label to paint.

paintThumb

public void paintThumb(Graphics g)

This method paints a thumb. There are two types of thumb:

   Vertical         Horizontal
    a---b            a-----b
    |   |            |      \
    e   c            |       c
     \ /             |      /
      d              e-----d
  

In the case of vertical thumbs, we highlight the path b-a-e-d and shadow the path b-c-d. In the case of horizontal thumbs, we highlight the path c-b-a-e and shadow the path c-d-e. In both cases we fill the path a-b-c-d-e before shadows and highlights are drawn.

Parameters:
g - The graphics object to paint with

setThumbLocation

public void setThumbLocation(int x,
                             int y)
This method sets the position of the thumbRect.

Parameters:
x - The new x position.
y - The new y position.

scrollByBlock

public void scrollByBlock(int direction)
Moves the thumb one block in the direction specified (a block is 1/10th of the slider range). If the slider snaps to ticks, this method is responsible for snapping it to a tick after the thumb has been moved.

Parameters:
direction - the direction (positive values increment the thumb position by one block, zero/negative values decrement the thumb position by one block).

scrollByUnit

public void scrollByUnit(int direction)
Moves the thumb one unit in the specified direction. If the slider snaps to ticks, this method is responsible for snapping it to a tick after the thumb has been moved.

Parameters:
direction - the direction (positive values increment the thumb position by one, zero/negative values decrement the thumb position by one).

scrollDueToClickInTrack

protected void scrollDueToClickInTrack(int dir)
This method is called when there has been a click in the track and the thumb needs to be scrolled on regular intervals. This method is only responsible for starting the timer and not for stopping it.

Parameters:
dir - The direction to move in.

xPositionForValue

protected int xPositionForValue(int value)
Returns the x-coordinate (relative to the component) for the given slider value. This method assumes that the trackRect field is set up.

Parameters:
value - the slider value.
Returns:
The x-coordinate.

yPositionForValue

protected int yPositionForValue(int value)
Returns the y-coordinate (relative to the component) for the given slider value. This method assumes that the trackRect field is set up.

Parameters:
value - the slider value.
Returns:
The y-coordinate.

valueForYPosition

public int valueForYPosition(int yPos)
This method returns the value in the slider's range given the y coordinate. If the value is out of range, it will return the closest legal value.

Parameters:
yPos - The y coordinate to calculate a value for.
Returns:
The value for the y coordinate.

valueForXPosition

public int valueForXPosition(int xPos)
This method returns the value in the slider's range given the x coordinate. If the value is out of range, it will return the closest legal value.

Parameters:
xPos - The x coordinate to calculate a value for.
Returns:
The value for the x coordinate.