javax.swing.plaf.metal

Class MetalScrollBarUI

Implemented Interfaces:
LayoutManager, SwingConstants

public class MetalScrollBarUI
extends BasicScrollBarUI

A UI delegate for the JScrollBar component.

Nested Class Summary

Nested classes/interfaces inherited from class javax.swing.plaf.basic.BasicScrollBarUI

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

Field Summary

static String
FREE_STANDING_PROP
The name for the 'free standing' property.
protected MetalScrollButton
decreaseButton
The button that decreases the value in the scroll bar.
protected MetalScrollButton
increaseButton
The button that increases the value in the scroll bar.
protected boolean
isFreeStanding
A flag that indicates whether the scroll bar is "free standing", which means it has complete borders and can be used anywhere in the UI.
protected int
scrollBarWidth
The scroll bar width.

Fields inherited from class javax.swing.plaf.basic.BasicScrollBarUI

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

Fields inherited from 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

Constructor Summary

MetalScrollBarUI()
Constructs a new instance of MetalScrollBarUI, with no specific initialisation.

Method Summary

protected JButton
createDecreaseButton(int orientation)
Creates a new button to use as the control at the lower end of the JScrollBar.
protected JButton
createIncreaseButton(int orientation)
Creates a new button to use as the control at the upper end of the JScrollBar.
protected PropertyChangeListener
createPropertyChangeListener()
Creates a property change listener for the delegate to use.
static ComponentUI
createUI(JComponent component)
Returns a new instance of MetalScrollBarUI.
protected Dimension
getMinimumThumbSize()
Returns the minimum thumb size.
Dimension
getPreferredSize(JComponent c)
Returns the preferredSize for the specified scroll bar.
protected void
installDefaults()
Installs the defaults.
protected void
paintThumb(Graphics g, JComponent c, Rectangle thumbBounds)
Paints the slider button of the ScrollBar.
protected void
paintTrack(Graphics g, JComponent c, Rectangle trackBounds)
Paints the track for the scrollbar.

Methods inherited from class javax.swing.plaf.basic.BasicScrollBarUI

addLayoutComponent, configureScrollBarColors, createArrowButtonListener, createDecreaseButton, createIncreaseButton, createModelListener, createPropertyChangeListener, createScrollListener, createTrackListener, createUI, getMaximumSize, getMaximumThumbSize, getMinimumSize, getMinimumThumbSize, getPreferredSize, getSupportsAbsolutePositioning, getThumbBounds, getTrackBounds, installComponents, installDefaults, installKeyboardActions, installListeners, installUI, isThumbRollover, layoutContainer, layoutHScrollbar, layoutVScrollbar, minimumLayoutSize, paint, paintDecreaseHighlight, paintIncreaseHighlight, paintThumb, paintTrack, preferredLayoutSize, removeLayoutComponent, scrollByBlock, scrollByUnit, setThumbBounds, setThumbRollover, uninstallComponents, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, uninstallUI

Methods inherited from class javax.swing.plaf.ComponentUI

contains, createUI, getAccessibleChild, getAccessibleChildrenCount, getMaximumSize, getMinimumSize, getPreferredSize, installUI, paint, uninstallUI, update

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Field Details

FREE_STANDING_PROP

public static final String FREE_STANDING_PROP
The name for the 'free standing' property.
Field Value:
"JScrollBar.isFreeStanding"

decreaseButton

protected MetalScrollButton decreaseButton
The button that decreases the value in the scroll bar.

increaseButton

protected MetalScrollButton increaseButton
The button that increases the value in the scroll bar.

isFreeStanding

protected boolean isFreeStanding
A flag that indicates whether the scroll bar is "free standing", which means it has complete borders and can be used anywhere in the UI. A scroll bar which is not free standing has borders missing from one side, and relies on being part of another container with its own borders to look right visually.

scrollBarWidth

protected int scrollBarWidth
The scroll bar width.

Constructor Details

MetalScrollBarUI

public MetalScrollBarUI()
Constructs a new instance of MetalScrollBarUI, with no specific initialisation.

Method Details

createDecreaseButton

protected JButton createDecreaseButton(int orientation)
Creates a new button to use as the control at the lower end of the JScrollBar. This method assigns the new button (an instance of MetalScrollButton to the decreaseButton field, and also returns the button. The button width is determined by the ScrollBar.width setting in the UI defaults.
Overrides:
createDecreaseButton in interface BasicScrollBarUI
Parameters:
orientation - the orientation of the button (SwingConstants.NORTH, SwingConstants.SOUTH, SwingConstants.EAST or SwingConstants.WEST).
Returns:
The button.

createIncreaseButton

protected JButton createIncreaseButton(int orientation)
Creates a new button to use as the control at the upper end of the JScrollBar. This method assigns the new button (an instance of MetalScrollButton to the increaseButton field, and also returns the button. The button width is determined by the ScrollBar.width setting in the UI defaults.
Overrides:
createIncreaseButton in interface BasicScrollBarUI
Parameters:
orientation - the orientation of the button (SwingConstants.NORTH, SwingConstants.SOUTH, SwingConstants.EAST or SwingConstants.WEST).
Returns:
The button.

createPropertyChangeListener

protected PropertyChangeListener createPropertyChangeListener()
Creates a property change listener for the delegate to use. This overrides the method to provide a custom listener for the MetalLookAndFeel that can handle the JScrollBar.isFreeStanding property.
Overrides:
createPropertyChangeListener in interface BasicScrollBarUI
Returns:
A property change listener.

createUI

public static ComponentUI createUI(JComponent component)
Returns a new instance of MetalScrollBarUI.
Overrides:
createUI in interface BasicScrollBarUI
Parameters:
component - the component for which we return an UI instance
Returns:
An instance of MetalScrollBarUI

getMinimumThumbSize

protected Dimension getMinimumThumbSize()
Returns the minimum thumb size. For a free standing scroll bar the minimum size is 17 x 17 pixels, whereas for a non free standing scroll bar the minimum size is 15 x 15 pixels.
Overrides:
getMinimumThumbSize in interface BasicScrollBarUI
Returns:
The minimum thumb size.

getPreferredSize

public Dimension getPreferredSize(JComponent c)
Returns the preferredSize for the specified scroll bar. For a vertical scrollbar the height is the sum of the preferred heights of the buttons plus 30. The width is fetched from the UIManager property ScrollBar.width. For horizontal scrollbars the width is the sum of the preferred widths of the buttons plus 30. The height is fetched from the UIManager property ScrollBar.height.
Overrides:
getPreferredSize in interface BasicScrollBarUI
Parameters:
c - the scrollbar for which to calculate the preferred size
Returns:
the preferredSize for the specified scroll bar

installDefaults

protected void installDefaults()
Installs the defaults.
Overrides:
installDefaults in interface BasicScrollBarUI

paintThumb

protected void paintThumb(Graphics g,
                          JComponent c,
                          Rectangle thumbBounds)
Paints the slider button of the ScrollBar.
Overrides:
paintThumb in interface BasicScrollBarUI
Parameters:
g - the Graphics context to use
c - the JComponent on which we paint
thumbBounds - the rectangle that is the slider button

paintTrack

protected void paintTrack(Graphics g,
                          JComponent c,
                          Rectangle trackBounds)
Paints the track for the scrollbar.
Overrides:
paintTrack in interface BasicScrollBarUI
Parameters:
g - the graphics device.
c - the component.
trackBounds - the track bounds.

MetalScrollBarUI.java Copyright (C) 2005, 2006, Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.