public class

ScrollPaneLayout

extends Object
implements LayoutManager Serializable ScrollPaneConstants
java.lang.Object
   ↳ javax.swing.ScrollPaneLayout
Known Direct Subclasses

Class Overview

The layout manager used by JScrollPane. JScrollPaneLayout is responsible for nine components: a viewport, two scrollbars, a row header, a column header, and four "corner" components.

Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeansTM has been added to the java.beans package. Please see XMLEncoder.

Summary

Nested Classes
class ScrollPaneLayout.UIResource The UI resource version of ScrollPaneLayout
[Expand]
Inherited Constants
From interface javax.swing.ScrollPaneConstants
Fields
protected JViewport colHead The column header child.
protected JScrollBar hsb The scrollpane's horizontal scrollbar child.
protected int hsbPolicy The display policy for the horizontal scrollbar.
protected Component lowerLeft The component to display in the lower left corner.
protected Component lowerRight The component to display in the lower right corner.
protected JViewport rowHead The row header child.
protected Component upperLeft The component to display in the upper left corner.
protected Component upperRight The component to display in the upper right corner.
protected JViewport viewport The scrollpane's viewport child.
protected JScrollBar vsb The scrollpane's vertical scrollbar child.
protected int vsbPolicy The display policy for the vertical scrollbar.
Public Constructors
ScrollPaneLayout()
Public Methods
void addLayoutComponent(String s, Component c)
Adds the specified component to the layout.
JViewport getColumnHeader()
Returns the JViewport object that is the column header.
Component getCorner(String key)
Returns the Component at the specified corner.
JScrollBar getHorizontalScrollBar()
Returns the JScrollBar object that handles horizontal scrolling.
int getHorizontalScrollBarPolicy()
Returns the horizontal scrollbar-display policy.
JViewport getRowHeader()
Returns the JViewport object that is the row header.
JScrollBar getVerticalScrollBar()
Returns the JScrollBar object that handles vertical scrolling.
int getVerticalScrollBarPolicy()
Returns the vertical scrollbar-display policy.
JViewport getViewport()
Returns the JViewport object that displays the scrollable contents.
Rectangle getViewportBorderBounds(JScrollPane scrollpane)
This method is deprecated. As of JDK version Swing1.1 replaced by JScrollPane.getViewportBorderBounds().
void layoutContainer(Container parent)
Lays out the scrollpane.
Dimension minimumLayoutSize(Container parent)
The minimum size of a ScrollPane is the size of the insets plus minimum size of the viewport, plus the scrollpane's viewportBorder insets, plus the minimum size of the visible headers, plus the minimum size of the scrollbars whose displayPolicy isn't NEVER.
Dimension preferredLayoutSize(Container parent)
The preferred size of a ScrollPane is the size of the insets, plus the preferred size of the viewport, plus the preferred size of the visible headers, plus the preferred size of the scrollbars that will appear given the current view and the current scrollbar displayPolicies.
void removeLayoutComponent(Component c)
Removes the specified component from the layout.
void setHorizontalScrollBarPolicy(int x)
Sets the horizontal scrollbar-display policy.
void setVerticalScrollBarPolicy(int x)
Sets the vertical scrollbar-display policy.
void syncWithScrollPane(JScrollPane sp)
This method is invoked after the ScrollPaneLayout is set as the LayoutManager of a JScrollPane.
Protected Methods
Component addSingletonComponent(Component oldC, Component newC)
Removes an existing component.
[Expand]
Inherited Methods
From class java.lang.Object
From interface java.awt.LayoutManager

Fields

protected JViewport colHead

The column header child. Default is null.

protected JScrollBar hsb

The scrollpane's horizontal scrollbar child. Default is a JScrollBar.

protected int hsbPolicy

The display policy for the horizontal scrollbar. The default is ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED.

This field is obsolete, please use the JScrollPane field instead.

protected Component lowerLeft

The component to display in the lower left corner. Default is null.

protected Component lowerRight

The component to display in the lower right corner. Default is null.

protected JViewport rowHead

The row header child. Default is null.

protected Component upperLeft

The component to display in the upper left corner. Default is null.

protected Component upperRight

The component to display in the upper right corner. Default is null.

protected JViewport viewport

The scrollpane's viewport child. Default is an empty JViewport.

protected JScrollBar vsb

The scrollpane's vertical scrollbar child. Default is a JScrollBar.

protected int vsbPolicy

The display policy for the vertical scrollbar. The default is ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED.

This field is obsolete, please use the JScrollPane field instead.

Public Constructors

public ScrollPaneLayout ()

Public Methods

public void addLayoutComponent (String s, Component c)

Adds the specified component to the layout. The layout is identified using one of:

  • ScrollPaneConstants.VIEWPORT
  • ScrollPaneConstants.VERTICAL_SCROLLBAR
  • ScrollPaneConstants.HORIZONTAL_SCROLLBAR
  • ScrollPaneConstants.ROW_HEADER
  • ScrollPaneConstants.COLUMN_HEADER
  • ScrollPaneConstants.LOWER_LEFT_CORNER
  • ScrollPaneConstants.LOWER_RIGHT_CORNER
  • ScrollPaneConstants.UPPER_LEFT_CORNER
  • ScrollPaneConstants.UPPER_RIGHT_CORNER

Parameters
s the component identifier
c the the component to be added
Throws
IllegalArgumentException if s is an invalid key

public JViewport getColumnHeader ()

Returns the JViewport object that is the column header.

Returns
  • the JViewport object that is the column header

public Component getCorner (String key)

Returns the Component at the specified corner.

Parameters
key the String specifying the corner
Returns
  • the Component at the specified corner, as defined in ScrollPaneConstants; if key is not one of the four corners, null is returned

public JScrollBar getHorizontalScrollBar ()

Returns the JScrollBar object that handles horizontal scrolling.

Returns
  • the JScrollBar object that handles horizontal scrolling

public int getHorizontalScrollBarPolicy ()

Returns the horizontal scrollbar-display policy.

Returns
  • an integer giving the display policy

public JViewport getRowHeader ()

Returns the JViewport object that is the row header.

Returns
  • the JViewport object that is the row header
See Also

public JScrollBar getVerticalScrollBar ()

Returns the JScrollBar object that handles vertical scrolling.

Returns
  • the JScrollBar object that handles vertical scrolling

public int getVerticalScrollBarPolicy ()

Returns the vertical scrollbar-display policy.

Returns
  • an integer giving the display policy

public JViewport getViewport ()

Returns the JViewport object that displays the scrollable contents.

Returns
  • the JViewport object that displays the scrollable contents
See Also

public Rectangle getViewportBorderBounds (JScrollPane scrollpane)

This method is deprecated.
As of JDK version Swing1.1 replaced by JScrollPane.getViewportBorderBounds().

Returns the bounds of the border around the specified scroll pane's viewport.

Returns
  • the size and position of the viewport border

public void layoutContainer (Container parent)

Lays out the scrollpane. The positioning of components depends on the following constraints:

  • The row header, if present and visible, gets its preferred width and the viewport's height.
  • The column header, if present and visible, gets its preferred height and the viewport's width.
  • If a vertical scrollbar is needed, i.e. if the viewport's extent height is smaller than its view height or if the displayPolicy is ALWAYS, it's treated like the row header with respect to its dimensions and is made visible.
  • If a horizontal scrollbar is needed, it is treated like the column header (see the paragraph above regarding the vertical scrollbar).
  • If the scrollpane has a non-null viewportBorder, then space is allocated for that.
  • The viewport gets the space available after accounting for the previous constraints.
  • The corner components, if provided, are aligned with the ends of the scrollbars and headers. If there is a vertical scrollbar, the right corners appear; if there is a horizontal scrollbar, the lower corners appear; a row header gets left corners, and a column header gets upper corners.

Parameters
parent the Container to lay out

public Dimension minimumLayoutSize (Container parent)

The minimum size of a ScrollPane is the size of the insets plus minimum size of the viewport, plus the scrollpane's viewportBorder insets, plus the minimum size of the visible headers, plus the minimum size of the scrollbars whose displayPolicy isn't NEVER.

Parameters
parent the Container that will be laid out
Returns
  • a Dimension object specifying the minimum size

public Dimension preferredLayoutSize (Container parent)

The preferred size of a ScrollPane is the size of the insets, plus the preferred size of the viewport, plus the preferred size of the visible headers, plus the preferred size of the scrollbars that will appear given the current view and the current scrollbar displayPolicies.

Note that the rowHeader is calculated as part of the preferred width and the colHeader is calculated as part of the preferred size.

Parameters
parent the Container that will be laid out
Returns
  • a Dimension object specifying the preferred size of the viewport and any scrollbars

public void removeLayoutComponent (Component c)

Removes the specified component from the layout.

Parameters
c the component to remove

public void setHorizontalScrollBarPolicy (int x)

Sets the horizontal scrollbar-display policy. The options are:

  • ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED
  • ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
  • ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS
Note: Applications should use the JScrollPane version of this method. It only exists for backwards compatibility with the Swing 1.0.2 (and earlier) versions of this class.

Parameters
x an int giving the display policy
Throws
IllegalArgumentException if x is not a valid horizontal scrollbar policy, as listed above

public void setVerticalScrollBarPolicy (int x)

Sets the vertical scrollbar-display policy. The options are:

  • ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED
  • ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER
  • ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
Note: Applications should use the JScrollPane version of this method. It only exists for backwards compatibility with the Swing 1.0.2 (and earlier) versions of this class.

Parameters
x an integer giving the display policy
Throws
IllegalArgumentException if x is an invalid vertical scroll bar policy, as listed above

public void syncWithScrollPane (JScrollPane sp)

This method is invoked after the ScrollPaneLayout is set as the LayoutManager of a JScrollPane. It initializes all of the internal fields that are ordinarily set by addLayoutComponent. For example:

 ScrollPaneLayout mySPLayout = new ScrollPanelLayout() {
     public void layoutContainer(Container p) {
         super.layoutContainer(p);
         // do some extra work here ...
     }
 };
 scrollpane.setLayout(mySPLayout):
 

Protected Methods

protected Component addSingletonComponent (Component oldC, Component newC)

Removes an existing component. When a new component, such as the left corner, or vertical scrollbar, is added, the old one, if it exists, must be removed.

This method returns newC. If oldC is not equal to newC and is non-null, it will be removed from its parent.

Parameters
oldC the Component to replace
newC the Component to add
Returns
  • the newC