ScrollPaneLayout (Java 2 Platform SE 5.0) (original) (raw)
javax.swing
Class ScrollPaneLayout
java.lang.Object
javax.swing.ScrollPaneLayout
All Implemented Interfaces:
LayoutManager, Serializable, ScrollPaneConstants
Direct Known Subclasses:
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 JavaBeansTM has been added to the java.beans
package. Please see XMLEncoder.
See Also:
Nested Class Summary | |
---|---|
static class | ScrollPaneLayout.UIResource The UI resource version of ScrollPaneLayout. |
Field Summary | |
---|---|
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. |
Constructor Summary |
---|
ScrollPaneLayout() |
Method Summary | |
---|---|
void | [addLayoutComponent](../../javax/swing/ScrollPaneLayout.html#addLayoutComponent%28java.lang.String, java.awt.Component%29)(String s,Component c) Adds the specified component to the layout. |
protected Component | [addSingletonComponent](../../javax/swing/ScrollPaneLayout.html#addSingletonComponent%28java.awt.Component, java.awt.Component%29)(Component oldC,Component newC) Removes an existing component. |
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) 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. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, [wait](../../java/lang/Object.html#wait%28long, int%29) |
Field Detail |
---|
viewport
protected JViewport viewport
The scrollpane's viewport child. Default is an empty JViewport
.
See Also:
JScrollPane.setViewport(javax.swing.JViewport)
vsb
protected JScrollBar vsb
The scrollpane's vertical scrollbar child. Default is a JScrollBar
.
See Also:
JScrollPane.setVerticalScrollBar(javax.swing.JScrollBar)
hsb
protected JScrollBar hsb
The scrollpane's horizontal scrollbar child. Default is a JScrollBar
.
See Also:
JScrollPane.setHorizontalScrollBar(javax.swing.JScrollBar)
rowHead
protected JViewport rowHead
The row header child. Default is null
.
See Also:
JScrollPane.setRowHeader(javax.swing.JViewport)
colHead
protected JViewport colHead
The column header child. Default is null
.
See Also:
JScrollPane.setColumnHeader(javax.swing.JViewport)
lowerLeft
protected Component lowerLeft
The component to display in the lower left corner. Default is null
.
See Also:
[JScrollPane.setCorner(java.lang.String, java.awt.Component)](../../javax/swing/JScrollPane.html#setCorner%28java.lang.String, java.awt.Component%29)
lowerRight
protected Component lowerRight
The component to display in the lower right corner. Default is null
.
See Also:
[JScrollPane.setCorner(java.lang.String, java.awt.Component)](../../javax/swing/JScrollPane.html#setCorner%28java.lang.String, java.awt.Component%29)
upperLeft
protected Component upperLeft
The component to display in the upper left corner. Default is null
.
See Also:
[JScrollPane.setCorner(java.lang.String, java.awt.Component)](../../javax/swing/JScrollPane.html#setCorner%28java.lang.String, java.awt.Component%29)
upperRight
protected Component upperRight
The component to display in the upper right corner. Default is null
.
See Also:
[JScrollPane.setCorner(java.lang.String, java.awt.Component)](../../javax/swing/JScrollPane.html#setCorner%28java.lang.String, java.awt.Component%29)
vsbPolicy
protected int vsbPolicy
The display policy for the vertical scrollbar. The default is JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED
.
This field is obsolete, please use the JScrollPane
field instead.
See Also:
JScrollPane.setVerticalScrollBarPolicy(int)
hsbPolicy
protected int hsbPolicy
The display policy for the horizontal scrollbar. The default is JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
.
This field is obsolete, please use the JScrollPane
field instead.
See Also:
JScrollPane.setHorizontalScrollBarPolicy(int)
Constructor Detail |
---|
ScrollPaneLayout
public ScrollPaneLayout()
Method Detail |
---|
syncWithScrollPane
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):
addSingletonComponent
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
addLayoutComponent
public void addLayoutComponent(String s, Component c)
Adds the specified component to the layout. The layout is identified using one of:
- JScrollPane.VIEWPORT
- JScrollPane.VERTICAL_SCROLLBAR
- JScrollPane.HORIZONTAL_SCROLLBAR
- JScrollPane.ROW_HEADER
- JScrollPane.COLUMN_HEADER
- JScrollPane.LOWER_LEFT_CORNER
- JScrollPane.LOWER_RIGHT_CORNER
- JScrollPane.UPPER_LEFT_CORNER
- JScrollPane.UPPER_RIGHT_CORNER
Specified by:
[addLayoutComponent](../../java/awt/LayoutManager.html#addLayoutComponent%28java.lang.String, java.awt.Component%29)
in interface [LayoutManager](../../java/awt/LayoutManager.html "interface in java.awt")
Parameters:
s
- the component identifier
c
- the the component to be added
Throws:
[IllegalArgumentException](../../java/lang/IllegalArgumentException.html "class in java.lang")
- if s
is an invalid key
removeLayoutComponent
public void removeLayoutComponent(Component c)
Removes the specified component from the layout.
Specified by:
[removeLayoutComponent](../../java/awt/LayoutManager.html#removeLayoutComponent%28java.awt.Component%29)
in interface [LayoutManager](../../java/awt/LayoutManager.html "interface in java.awt")
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(int)
setVerticalScrollBarPolicy
public void setVerticalScrollBarPolicy(int x)
Sets the vertical scrollbar-display policy. The options are:
- JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED
- JScrollPane.VERTICAL_SCROLLBAR_NEVER
- JScrollPane.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](../../java/lang/IllegalArgumentException.html "class in java.lang")
- if x
is 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(int)
setHorizontalScrollBarPolicy
public void setHorizontalScrollBarPolicy(int x)
Sets the horizontal scrollbar-display policy. The options are:
- JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED
- JScrollPane.HOTRIZONTAL_SCROLLBAR_NEVER
- JScrollPane.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](../../java/lang/IllegalArgumentException.html "class in java.lang")
- if x
is not a valid horizontal scrollbar policy, as listed above
getViewport
public JViewport getViewport()
Returns the JViewport
object that displays the scrollable contents.
Returns:
the JViewport
object that displays the scrollable contents
See Also:
getHorizontalScrollBar
public JScrollBar getHorizontalScrollBar()
Returns the JScrollBar
object that handles horizontal scrolling.
Returns:
the JScrollBar
object that handles horizontal scrolling
See Also:
JScrollPane.getHorizontalScrollBar()
getVerticalScrollBar
public JScrollBar getVerticalScrollBar()
Returns the JScrollBar
object that handles vertical scrolling.
Returns:
the JScrollBar
object that handles vertical scrolling
See Also:
JScrollPane.getVerticalScrollBar()
getRowHeader
public JViewport getRowHeader()
Returns the JViewport
object that is the row header.
Returns:
the JViewport
object that is the row header
See Also:
getColumnHeader
public JViewport getColumnHeader()
Returns the JViewport
object that is the column header.
Returns:
the JViewport
object that is the column header
See Also:
getCorner
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 inScrollPaneConstants; if key
is not one of the four corners, null
is returned
See Also:
JScrollPane.getCorner(java.lang.String)
preferredLayoutSize
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.
Specified by:
[preferredLayoutSize](../../java/awt/LayoutManager.html#preferredLayoutSize%28java.awt.Container%29)
in interface [LayoutManager](../../java/awt/LayoutManager.html "interface in java.awt")
Parameters:
parent
- the Container
that will be laid out
Returns:
a Dimension
object specifying the preferred size of the viewport and any scrollbars
See Also:
minimumLayoutSize
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.
Specified by:
[minimumLayoutSize](../../java/awt/LayoutManager.html#minimumLayoutSize%28java.awt.Container%29)
in interface [LayoutManager](../../java/awt/LayoutManager.html "interface in java.awt")
Parameters:
parent
- the Container
that will be laid out
Returns:
a Dimension
object specifying the minimum size
See Also:
LayoutManager.preferredLayoutSize(java.awt.Container)
layoutContainer
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.
Specified by:
[layoutContainer](../../java/awt/LayoutManager.html#layoutContainer%28java.awt.Container%29)
in interface [LayoutManager](../../java/awt/LayoutManager.html "interface in java.awt")
Parameters:
parent
- the Container
to lay out
getViewportBorderBounds
@Deprecated public Rectangle getViewportBorderBounds(JScrollPane scrollpane)
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
Submit a bug or feature
For further API reference and developer documentation, see Java 2 SDK SE Developer Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.