javax.swing.plaf.basic

Class BasicScrollPaneUI

Implemented Interfaces:
ScrollPaneConstants
Known Direct Subclasses:
MetalScrollPaneUI

public class BasicScrollPaneUI
extends ScrollPaneUI
implements ScrollPaneConstants

A UI delegate for the JScrollPane component.

Nested Class Summary

class
BasicScrollPaneUI.HSBChangeListener
Listens for changes in the state of the horizontal scrollbar's model and updates the scrollpane accordingly.
protected class
BasicScrollPaneUI.MouseWheelHandler
Listens for mouse wheel events and update the scrollpane accordingly.
class
BasicScrollPaneUI.PropertyChangeHandler
Listens for property changes on the scrollpane and update the view accordingly.
class
BasicScrollPaneUI.ViewportChangeHandler
Listens for changes of the viewport's extent size and updates the scrollpane accordingly.
class
BasicScrollPaneUI.VSBChangeListener
Listens for changes in the state of the vertical scrollbar's model and updates the scrollpane accordingly.

Field Summary

protected ChangeListener
hsbChangeListener
The horizontal scrollbar listener.
protected JScrollPane
scrollpane
The Scrollpane for which the UI is provided by this class.
protected PropertyChangeListener
spPropertyChangeListener
The scrollpane property change listener.
protected ChangeListener
viewportChangeListener
The viewport listener.
protected ChangeListener
vsbChangeListener
The vertical scrollbar listener.

Fields inherited from interface javax.swing.ScrollPaneConstants

COLUMN_HEADER, HORIZONTAL_SCROLLBAR, HORIZONTAL_SCROLLBAR_ALWAYS, HORIZONTAL_SCROLLBAR_AS_NEEDED, HORIZONTAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_POLICY, LOWER_LEADING_CORNER, LOWER_LEFT_CORNER, LOWER_RIGHT_CORNER, LOWER_TRAILING_CORNER, ROW_HEADER, UPPER_LEADING_CORNER, UPPER_LEFT_CORNER, UPPER_RIGHT_CORNER, UPPER_TRAILING_CORNER, VERTICAL_SCROLLBAR, VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED, VERTICAL_SCROLLBAR_NEVER, VERTICAL_SCROLLBAR_POLICY, VIEWPORT

Method Summary

protected ChangeListener
createHSBChangeListener()
Creates and returns the change listener for the horizontal scrollbar.
protected MouseWheelListener
createMouseWheelListener()
Creates and returns the mouse wheel listener for the scrollpane.
protected PropertyChangeListener
createPropertyChangeListener()
Creates and returns the property change listener for the scrollpane.
static ComponentUI
createUI(JComponent c)
Creates a delegate object for the specified component.
protected ChangeListener
createVSBChangeListener()
Creates and returns the change listener for the vertical scrollbar.
protected ChangeListener
createViewportChangeListener()
Creates and returns the change listener for the viewport.
Dimension
getMinimumSize(JComponent c)
Determines the minimum size of a component.
protected void
installDefaults(JScrollPane p)
protected void
installKeyboardActions(JScrollPane sp)
Installs additional keyboard actions on the scrollpane.
protected void
installListeners(JScrollPane sp)
Installs the listeners on the scrollbars, the viewport and the scrollpane.
void
installUI(JComponent c)
Sets up the specified component so it conforms the the design guidelines of the implemented look and feel.
void
paint(Graphics g, JComponent c)
Paints the component according to the design guidelines of the look and feel.
protected void
syncScrollPaneWithViewport()
Synchronizes the scrollbar and header settings positions and extent with the viewport's view position and extent.
protected void
uninstallDefaults(JScrollPane p)
protected void
uninstallKeyboardActions(JScrollPane sp)
Uninstalls all keyboard actions from the JScrollPane that have been installed by installKeyboardActions(JScrollPane).
protected void
uninstallListeners(JComponent c)
Uninstalls all the listeners that have been installed in installListeners(JScrollPane).
void
uninstallUI(JComponent c)
Puts the specified component into the state it had before ComponentUI.installUI(JComponent) was called.
protected void
updateColumnHeader(PropertyChangeEvent ev)
Receives notification when the columnHeader property has changed on the scrollpane.
protected void
updateRowHeader(PropertyChangeEvent ev)
Receives notification when the rowHeader property has changed on the scrollpane.
protected void
updateScrollBarDisplayPolicy(PropertyChangeEvent ev)
Receives notification when the scrollBarDisplayPolicy property has changed on the scrollpane.
protected void
updateViewport(PropertyChangeEvent ev)
Receives notification when the viewport property has changed on the scrollpane.

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

hsbChangeListener

protected ChangeListener hsbChangeListener
The horizontal scrollbar listener.

scrollpane

protected JScrollPane scrollpane
The Scrollpane for which the UI is provided by this class.

spPropertyChangeListener

protected PropertyChangeListener spPropertyChangeListener
The scrollpane property change listener.

viewportChangeListener

protected ChangeListener viewportChangeListener
The viewport listener.

vsbChangeListener

protected ChangeListener vsbChangeListener
The vertical scrollbar listener.

Method Details

createHSBChangeListener

protected ChangeListener createHSBChangeListener()
Creates and returns the change listener for the horizontal scrollbar.
Returns:
the change listener for the horizontal scrollbar

createMouseWheelListener

protected MouseWheelListener createMouseWheelListener()
Creates and returns the mouse wheel listener for the scrollpane.
Returns:
the mouse wheel listener for the scrollpane
Since:
1.4

createPropertyChangeListener

protected PropertyChangeListener createPropertyChangeListener()
Creates and returns the property change listener for the scrollpane.
Returns:
the property change listener for the scrollpane

createUI

public static ComponentUI createUI(JComponent c)
Creates a delegate object for the specified component. Users should use the createUI method of a suitable subclass. The implementation of ComponentUI always throws an error.
Overrides:
createUI in interface ComponentUI
Parameters:
c - the component for which a UI delegate is requested.

createVSBChangeListener

protected ChangeListener createVSBChangeListener()
Creates and returns the change listener for the vertical scrollbar.
Returns:
the change listener for the vertical scrollbar

createViewportChangeListener

protected ChangeListener createViewportChangeListener()
Creates and returns the change listener for the viewport.
Returns:
the change listener for the viewport

getMinimumSize

public Dimension getMinimumSize(JComponent c)
Determines the minimum size of a component. The default implementation calls ComponentUI.getPreferredSize(JComponent), but subclasses might want to override this.
Overrides:
getMinimumSize in interface ComponentUI
Parameters:
c - the component for which this delegate performs services.
Returns:
the minimum size, or null to indicate that c’s layout manager should be asked to calculate the minimum size.

installDefaults

protected void installDefaults(JScrollPane p)

installKeyboardActions

protected void installKeyboardActions(JScrollPane sp)
Installs additional keyboard actions on the scrollpane. This is a hook method provided to subclasses in order to install their own keyboard actions.
Parameters:
sp - the scrollpane to install keyboard actions on

installListeners

protected void installListeners(JScrollPane sp)
Installs the listeners on the scrollbars, the viewport and the scrollpane.
Parameters:
sp - the scrollpane on which to install the listeners

installUI

public void installUI(JComponent c)
Sets up the specified component so it conforms the the design guidelines of the implemented look and feel. When the look and feel changes, a ComponentUI delegate is created. The delegate object then receives an installUI message.

This method should perform the following tasks:

  • Set visual properties such as borders, fonts, colors, or icons. However, no change should be performed for those properties whose values have been directly set by the client application. To allow the distinction, LookAndFeels are expected to use values that implement the UIResource marker interface, such as BorderUIResource or ColorUIResource.
  • If necessary, install a LayoutManager.
  • Embed custom sub-components. For instance, the UI delegate for a JSplitPane might install a special component for the divider.
  • Register event listeners.
  • Set up properties related to keyborad navigation, such as mnemonics or focus traversal policies.
Overrides:
installUI in interface ComponentUI
Parameters:
c - the component for which this delegate will provide services.

paint

public void paint(Graphics g,
                  JComponent c)
Paints the component according to the design guidelines of the look and feel. Most subclasses will want to override this method.
Overrides:
paint in interface ComponentUI
Parameters:
g - the graphics for painting.
c - the component for which this delegate performs services.

syncScrollPaneWithViewport

protected void syncScrollPaneWithViewport()
Synchronizes the scrollbar and header settings positions and extent with the viewport's view position and extent.

uninstallDefaults

protected void uninstallDefaults(JScrollPane p)

uninstallKeyboardActions

protected void uninstallKeyboardActions(JScrollPane sp)
Uninstalls all keyboard actions from the JScrollPane that have been installed by installKeyboardActions(JScrollPane). This is a hook method provided to subclasses to add their own keyboard actions.
Parameters:
sp - the scrollpane to uninstall keyboard actions from

uninstallListeners

protected void uninstallListeners(JComponent c)
Uninstalls all the listeners that have been installed in installListeners(JScrollPane).
Parameters:
c - the scrollpane from which to uninstall the listeners

uninstallUI

public void uninstallUI(JComponent c)
Puts the specified component into the state it had before ComponentUI.installUI(JComponent) was called.
Overrides:
uninstallUI in interface ComponentUI
Parameters:
c - the component for which this delegate has provided services.

updateColumnHeader

protected void updateColumnHeader(PropertyChangeEvent ev)
Receives notification when the columnHeader property has changed on the scrollpane.
Parameters:
ev - the property change event

updateRowHeader

protected void updateRowHeader(PropertyChangeEvent ev)
Receives notification when the rowHeader property has changed on the scrollpane.
Parameters:
ev - the property change event

updateScrollBarDisplayPolicy

protected void updateScrollBarDisplayPolicy(PropertyChangeEvent ev)
Receives notification when the scrollBarDisplayPolicy property has changed on the scrollpane.
Parameters:
ev - the property change event

updateViewport

protected void updateViewport(PropertyChangeEvent ev)
Receives notification when the viewport property has changed on the scrollpane. This method sets removes the viewportChangeListener from the old viewport and adds it to the new viewport.
Parameters:
ev - the property change event

BasicScrollPaneUI.java Copyright (C) 2002, 2004, 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.