javax.swing.plaf.basic
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 {@link 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 {@link
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 {@link 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. |
protected PropertyChangeListener | propertyChangeListener Listener for changes to the {@link JSlider}. |
static int | POSITIVE_SCROLL A constant describing scrolling towards the maximum. |
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 {@link 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 {@link #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 {@link ChangeListener}.
|
protected ComponentListener | createComponentListener(JSlider slider)
Creates a new {@link ComponentListener}.
|
protected FocusListener | createFocusListener(JSlider slider)
Creates a new {@link FocusListener}.
|
protected PropertyChangeListener | createPropertyChangeListener(JSlider slider)
Creates a new {@link PropertyChangeListener}.
|
protected BasicSliderUI.ScrollListener | createScrollListener(JSlider slider)
Creates a new {@link ScrollListener}.
|
protected BasicSliderUI.TrackListener | createTrackListener(JSlider slider)
Creates a new {@link TrackListener}.
|
static ComponentUI | createUI(JComponent b)
Factory method to create a BasicSliderUI for the given {@link
JComponent}, which should be a {@link 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 {@link 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 {@link 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 {@link 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. |
Parameters: b The {@link JSlider} that this UI was created for.
contentRect
field to an area inside the
focusRect
. This method does not need to be called if the
orientation changes.labelRect
field, taking into account the
orientation of the slider.thumbRect
field, using the
dimensions returned by {@link #getThumbSize()}.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.Parameters: slider The {@link JSlider} that this {@link ChangeListener} is created for.
Returns: A new {@link ChangeListener}.
Parameters: slider The {@link JSlider} that this {@link ComponentListener} is created for.
Returns: A new {@link ComponentListener}.
Parameters: slider The {@link JSlider} that this {@link FocusListener} is created for.
Returns: A new {@link FocusListener}.
Parameters: slider The {@link JSlider} that this {@link PropertyChangeListener} is created for.
Returns: A new {@link PropertyChangeListener}.
Parameters: slider The {@link JSlider} that this {@link ScrollListener} is created for.
Returns: A new {@link ScrollListener}.
Parameters: slider The {@link JSlider} that this {@link TrackListener} is created for.
Returns: A new {@link TrackListener}.
Parameters: b The {@link JComponent} a UI is being created for.
Returns: A BasicSliderUI for the {@link JComponent}.
true
if the slider scale is to be drawn inverted,
and false
if not.
Returns: true
if the slider is to be drawn inverted.
Returns: The focus color.
Returns: The height of the high value label or 0 if no label table exists.
Returns: The height of the low value label or 0 if no label table exists.
Returns: The height of the tallest label or 0 if no label table exists.
Returns: The label whose key has the highest value or null
if
no label table exists.
Returns: The highlight color.
Returns: The low value label or null if no label table exists.
Parameters: c The {@link JComponent} to find a maximum size for.
Returns: The dimensions of the maximum size.
Returns: The dimensions of the minimum horizontal size.
Parameters: c The {@link JComponent} to find the minimum size for.
Returns: The dimensions of the minimum size.
Returns: The dimensions of the minimum vertical size.
Returns: The dimensions of the preferred horizontal size.
Parameters: c The {@link JComponent} to find the preferred size for.
Returns: The dimensions of the preferred size.
Returns: The dimensions of the preferred vertical size.
Returns: The shadow color.
11 x 20
for horizontal sliders, and 20 x 11
for
vertical sliders. Note that a new instance of {@link Dimension} is
returned for every call to this method (this seems wasteful, but
{@link Dimension} instances are not immutable, so this is probably
unavoidable).
Returns: The size of the slider's thumb.
Returns: The height (or width if the slider is vertical) of the tick rectangle.
Returns: The width of the label whose key has the highest value.
See Also: getHighestValueLabel
Returns: The width of the label whose key has the lowest value.
See Also: getLowestValueLabel
Returns: The width of the widest label or 0 if no label table exists.
Parameters: slider The {@link JSlider} that is having this UI installed.
Parameters: slider The {@link JSlider} that is having keyboard actions installed.
Parameters: slider The {@link JSlider} is having listeners installed.
Parameters: c The {@link JComponent} that is having this UI installed.
Returns: true if the slider is being dragged.
Since: 1.5
Parameters: g The {@link Graphics} object to paint with. c The {@link JComponent} that is being painted.
Parameters: g The {@link Graphics} object to draw with.
Parameters: g The {@link Graphics} object to draw with. value The value to paint at. label The label to paint.
Parameters: g The {@link Graphics} object to draw with.
Parameters: g The {@link Graphics} object to draw with. tickBounds The tickRect rectangle. x The x coordinate to draw the tick at.
Parameters: g The {@link Graphics} object to draw with. tickBounds The tickRect rectangle. y The y coordinate to draw the tick at.
Parameters: g The {@link Graphics} object to draw with. tickBounds The tickRect rectangle. x The x coordinate to draw the tick at.
Parameters: g The {@link Graphics} object to draw with. tickBounds The tickRect rectangle. y The y coordinate to draw the tick at.
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
Parameters: g The {@link Graphics} object to draw with.
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 {@link Graphics} object to draw with.
Parameters: g The {@link Graphics} object to draw with. value The value to paint at. label The label to paint.
Parameters: direction the direction (positive values increment the thumb position by one block, zero/negative values decrement the thumb position by one block).
Parameters: direction the direction (positive values increment the thumb position by one, zero/negative values decrement the thumb position by one).
Parameters: dir The direction to move in.
Parameters: x The new x position. y The new y position.
Parameters: slider The {@link JSlider} that is having keyboard actions uninstalled.
Parameters: slider The {@link JSlider} that is having listeners removed.
Parameters: c The {@link JComponent} that is having this UI uninstalled.
Parameters: xPos The x coordinate to calculate a value for.
Returns: The value for the x coordinate.
Parameters: yPos The y coordinate to calculate a value for.
Returns: The value for the y coordinate.
trackRect
field is
set up.
Parameters: value the slider value.
Returns: The x-coordinate.
trackRect
field is
set up.
Parameters: value the slider value.
Returns: The y-coordinate.