java.lang.Object
javax.swing.ScrollPaneLayout
- All Implemented Interfaces:
LayoutManager,Serializable,ScrollPaneConstants
- Direct Known Subclasses:
ScrollPaneLayout.UIResource
public class ScrollPaneLayout
extends Object
implements LayoutManager, ScrollPaneConstants, Serializable
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 JavaBeans
has been added to the java.beans package.
Please see XMLEncoder.
- Since:
- 1.2
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classThe UI resource version ofScrollPaneLayout. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected JViewportThe column header child.protected JScrollBarThe scrollpane's horizontal scrollbar child.protected intThe display policy for the horizontal scrollbar.protected ComponentThe component to display in the lower left corner.protected ComponentThe component to display in the lower right corner.protected JViewportThe row header child.protected ComponentThe component to display in the upper left corner.protected ComponentThe component to display in the upper right corner.protected JViewportThe scrollpane's viewport child.protected JScrollBarThe scrollpane's vertical scrollbar child.protected intThe display policy for the vertical scrollbar.Fields declared in 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 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidAdds the specified component to the layout.protected ComponentaddSingletonComponent(Component oldC, Component newC) Removes an existing component.Returns theJViewportobject that is the column header.Returns theComponentat the specified corner.Returns theJScrollBarobject that handles horizontal scrolling.intReturns the horizontal scrollbar-display policy.Returns theJViewportobject that is the row header.Returns theJScrollBarobject that handles vertical scrolling.intReturns the vertical scrollbar-display policy.Returns theJViewportobject that displays the scrollable contents.getViewportBorderBounds(JScrollPane scrollpane) Deprecated.voidlayoutContainer(Container parent) Lays out the scrollpane.minimumLayoutSize(Container parent) The minimum size of aScrollPaneis 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.preferredLayoutSize(Container parent) The preferred size of aScrollPaneis 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.voidRemoves the specified component from the layout.voidsetHorizontalScrollBarPolicy(int x) Sets the horizontal scrollbar-display policy.voidsetVerticalScrollBarPolicy(int x) Sets the vertical scrollbar-display policy.voidThis method is invoked after the ScrollPaneLayout is set as the LayoutManager of aJScrollPane.
-
Field Details
-
viewport
The scrollpane's viewport child. Default is an emptyJViewport.- See Also:
-
vsb
The scrollpane's vertical scrollbar child. Default is aJScrollBar.- See Also:
-
hsb
The scrollpane's horizontal scrollbar child. Default is aJScrollBar.- See Also:
-
rowHead
The row header child. Default isnull.- See Also:
-
colHead
The column header child. Default isnull.- See Also:
-
lowerLeft
The component to display in the lower left corner. Default isnull.- See Also:
-
lowerRight
The component to display in the lower right corner. Default isnull.- See Also:
-
upperLeft
The component to display in the upper left corner. Default isnull.- See Also:
-
upperRight
The component to display in the upper right corner. Default isnull.- See Also:
-
vsbPolicy
protected int vsbPolicyThe display policy for the vertical scrollbar. The default isScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED.This field is obsolete, please use the
JScrollPanefield instead.- See Also:
-
hsbPolicy
protected int hsbPolicyThe display policy for the horizontal scrollbar. The default isScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED.This field is obsolete, please use the
JScrollPanefield instead.- See Also:
-
-
Constructor Details
-
ScrollPaneLayout
public ScrollPaneLayout()Constructs aScrollPaneLayout.
-
-
Method Details
-
syncWithScrollPane
This method is invoked after the ScrollPaneLayout is set as the LayoutManager of aJScrollPane. It initializes all of the internal fields that are ordinarily set byaddLayoutComponent. For example:ScrollPaneLayout mySPLayout = new ScrollPanelLayout() { public void layoutContainer(Container p) { super.layoutContainer(p); // do some extra work here ... } }; scrollpane.setLayout(mySPLayout):- Parameters:
sp- an instance of theJScrollPane
-
addSingletonComponent
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. IfoldCis not equal tonewCand is non-null, it will be removed from its parent.- Parameters:
oldC- theComponentto replacenewC- theComponentto add- Returns:
- the
newC
-
addLayoutComponent
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
- Specified by:
addLayoutComponentin interfaceLayoutManager- Parameters:
s- the component identifierc- the component to be added- Throws:
IllegalArgumentException- ifsis an invalid key
-
removeLayoutComponent
Removes the specified component from the layout.- Specified by:
removeLayoutComponentin interfaceLayoutManager- Parameters:
c- the component to remove
-
getVerticalScrollBarPolicy
public int getVerticalScrollBarPolicy()Returns the vertical scrollbar-display policy.- Returns:
- an integer giving the display policy
- See Also:
-
setVerticalScrollBarPolicy
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
JScrollPaneversion 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- ifxis an invalid vertical scroll bar policy, as listed above
-
getHorizontalScrollBarPolicy
public int getHorizontalScrollBarPolicy()Returns the horizontal scrollbar-display policy.- Returns:
- an integer giving the display policy
- See Also:
-
setHorizontalScrollBarPolicy
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
JScrollPaneversion 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- ifxis not a valid horizontal scrollbar policy, as listed above
-
getViewport
Returns theJViewportobject that displays the scrollable contents.- Returns:
- the
JViewportobject that displays the scrollable contents - See Also:
-
getHorizontalScrollBar
Returns theJScrollBarobject that handles horizontal scrolling.- Returns:
- the
JScrollBarobject that handles horizontal scrolling - See Also:
-
getVerticalScrollBar
Returns theJScrollBarobject that handles vertical scrolling.- Returns:
- the
JScrollBarobject that handles vertical scrolling - See Also:
-
getRowHeader
Returns theJViewportobject that is the row header.- Returns:
- the
JViewportobject that is the row header - See Also:
-
getColumnHeader
Returns theJViewportobject that is the column header.- Returns:
- the
JViewportobject that is the column header - See Also:
-
getCorner
Returns theComponentat the specified corner.- Parameters:
key- theStringspecifying the corner- Returns:
- the
Componentat the specified corner, as defined inScrollPaneConstants; ifkeyis not one of the four corners,nullis returned - See Also:
-
preferredLayoutSize
The preferred size of aScrollPaneis 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.
- Specified by:
preferredLayoutSizein interfaceLayoutManager- Parameters:
parent- theContainerthat will be laid out- Returns:
- a
Dimensionobject specifying the preferred size of the viewport and any scrollbars - See Also:
-
minimumLayoutSize
The minimum size of aScrollPaneis 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.- Specified by:
minimumLayoutSizein interfaceLayoutManager- Parameters:
parent- theContainerthat will be laid out- Returns:
- a
Dimensionobject specifying the minimum size - See Also:
-
layoutContainer
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
displayPolicyis 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-
nullviewportBorder, 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.
- Specified by:
layoutContainerin interfaceLayoutManager- Parameters:
parent- theContainerto lay out
-
getViewportBorderBounds
Deprecated.As of JDK version Swing1.1 replaced byJScrollPane.getViewportBorderBounds().Returns the bounds of the border around the specified scroll pane's viewport.- Parameters:
scrollpane- an instance of theJScrollPane- Returns:
- the size and position of the viewport border
-
JScrollPane.getViewportBorderBounds().