Class ScrollPaneLayout
- All Implemented Interfaces:
-
LayoutManager,Serializable,ScrollPaneConstants
- Direct Known Subclasses:
ScrollPaneLayout.UIResource
public class ScrollPaneLayout extends Object implements LayoutManager, ScrollPaneConstants, Serializable
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
| Modifier and Type | Class | Description |
|---|---|---|
static class |
ScrollPaneLayout.UIResource |
The UI resource version of ScrollPaneLayout. |
Field Summary
| Modifier and Type | Field | Description |
|---|---|---|
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. |
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
| Constructor | Description |
|---|---|
ScrollPaneLayout() |
Constructs a ScrollPaneLayout. |
Method Summary
| Modifier and Type | Method | Description |
|---|---|---|
void |
addLayoutComponent |
Adds the specified component to the layout. |
protected Component |
addSingletonComponent |
Removes an existing component. |
JViewport |
getColumnHeader() |
Returns the JViewport object that is the column header. |
Component |
getCorner |
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 |
Deprecated. |
void |
layoutContainer |
Lays out the scrollpane. |
Dimension |
minimumLayoutSize |
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 |
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 |
Removes the specified component from the layout. |
void |
setHorizontalScrollBarPolicy |
Sets the horizontal scrollbar-display policy. |
void |
setVerticalScrollBarPolicy |
Sets the vertical scrollbar-display policy. |
void |
syncWithScrollPane |
This method is invoked after the ScrollPaneLayout is set as the LayoutManager of a JScrollPane. |
Field Details
viewport
protected JViewport viewport
JViewport.vsb
protected JScrollBar vsb
JScrollBar.hsb
protected JScrollBar hsb
JScrollBar.rowHead
protected JViewport rowHead
null.colHead
protected JViewport colHead
null.lowerLeft
protected Component lowerLeft
null.lowerRight
protected Component lowerRight
null.upperLeft
protected Component upperLeft
null.upperRight
protected Component upperRight
null.vsbPolicy
protected int vsbPolicy
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED. This field is obsolete, please use the JScrollPane field instead.
hsbPolicy
protected int hsbPolicy
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED. This field is obsolete, please use the JScrollPane field instead.
Constructor Details
ScrollPaneLayout
public ScrollPaneLayout()
ScrollPaneLayout.Method Details
syncWithScrollPane
public void syncWithScrollPane(JScrollPane sp)
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):
- Parameters:
-
sp- an instance of theJScrollPane
addSingletonComponent
protected Component addSingletonComponent(Component oldC, Component newC)
This method returns newC. If oldC is not equal to newC and is non-null, it will be removed from its parent.
- Parameters:
-
oldC- theComponentto replace -
newC- theComponentto add - Returns:
- the
newC
addLayoutComponent
public void addLayoutComponent(String s, Component c)
- 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 identifier -
c- the component to be added - Throws:
-
IllegalArgumentException- ifsis an invalid key
removeLayoutComponent
public void removeLayoutComponent(Component c)
- Specified by:
-
removeLayoutComponentin interfaceLayoutManager - Parameters:
-
c- the component to remove
getVerticalScrollBarPolicy
public int getVerticalScrollBarPolicy()
- Returns:
- an integer giving the display policy
- See Also:
setVerticalScrollBarPolicy
public void setVerticalScrollBarPolicy(int x)
- ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED
- ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER
- ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS
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- ifxis an invalid vertical scroll bar policy, as listed above
getHorizontalScrollBarPolicy
public int getHorizontalScrollBarPolicy()
- Returns:
- an integer giving the display policy
- See Also:
setHorizontalScrollBarPolicy
public void setHorizontalScrollBarPolicy(int x)
- ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED
- ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER
- ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS
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- ifxis not a valid horizontal scrollbar policy, as listed above
getViewport
public JViewport getViewport()
JViewport object that displays the scrollable contents.- Returns:
- the
JViewportobject that displays the scrollable contents - See Also:
getHorizontalScrollBar
public JScrollBar getHorizontalScrollBar()
JScrollBar object that handles horizontal scrolling.- Returns:
- the
JScrollBarobject that handles horizontal scrolling - See Also:
getVerticalScrollBar
public JScrollBar getVerticalScrollBar()
JScrollBar object that handles vertical scrolling.- Returns:
- the
JScrollBarobject that handles vertical scrolling - See Also:
getRowHeader
public JViewport getRowHeader()
JViewport object that is the row header.- Returns:
- the
JViewportobject that is the row header - See Also:
getColumnHeader
public JViewport getColumnHeader()
JViewport object that is the column header.- Returns:
- the
JViewportobject that is the column header - See Also:
getCorner
public Component getCorner(String key)
Component at 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
public Dimension preferredLayoutSize(Container parent)
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.
- 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
public Dimension minimumLayoutSize(Container parent)
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.- Specified by:
-
minimumLayoutSizein interfaceLayoutManager - Parameters:
-
parent- theContainerthat will be laid out - Returns:
- a
Dimensionobject specifying the minimum size - See Also:
layoutContainer
public void layoutContainer(Container parent)
- 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 public Rectangle getViewportBorderBounds(JScrollPane scrollpane)
JScrollPane.getViewportBorderBounds().- Parameters:
-
scrollpane- an instance of theJScrollPane - Returns:
- the size and position of the viewport border
© 1993, 2021, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/javax/swing/ScrollPaneLayout.html
JScrollPane.getViewportBorderBounds().