java.lang.Object
javax.swing.JComponent
javax.swing.JScrollPane
Provides a scrollable view of a lightweight component. A JScrollPane
manages a viewport, optional vertical and horizontal scroll bars, and
optional row and column heading viewports. You can find task-oriented
documentation of JScrollPane in How
to
Use
Scroll
Panes, a section in The Java Tutorial. Note
that JScrollPane does not support heavyweight components.
|
|
JViewport provides a window, or "viewport" onto a
data source -- for example, a text file. That data source is the
"scrollable client" (aka data model) displayed by the JViewport
view. A JScrollPane basically consists of JScrollBars,
a
JViewport, and the wiring between them, as shown in the
diagram at right.
In addition to the scroll bars and viewport, a JScrollPane
can have a column header and a row header. Each of these is a JViewport
object that you specify with setRowHeaderView, and setColumnHeaderView.
The
column
header
viewport automatically scrolls left and right,
tracking the left-right scrolling of the main viewport. (It never
scrolls vertically, however.) The row header acts in a similar fashion.
By default, the corners are empty. You can put a component into a
corner using setCorner, in case you there is some
function or decoration you would like to add to the scroll pane. The
size of corner components is entirely determined by the size of the
headers and scroll bars that surround them.
To add a border around the main viewport, you can use setViewportBorder.
(Of
course,
you
can also add a border around the whole scroll pane
using setBorder.)
For the keyboard keys used by this component in the standard Look and Feel (L&F) renditions, see the JScrollPane key assignments.
A common operation to want to do is to set the background color
that will be used if the main viewport view is smaller than the
viewport, or is not opaque. This can be accomplished by setting the
background color of the viewport, via scrollPane.getViewport().setBackground().
The
reason
for
setting the color of the viewport and not the scrollpane
is that by default JViewport is opaque which, among other
things, means it will completely fill in its background using its
background color. Therefore when JScrollPane draws its
background the viewport will usually draw over it.
By default JScrollPane uses ScrollPaneLayout
to handle the layout of its child Components. ScrollPaneLayout
determines the size to make the viewport view in one of two ways:
Scrollable a combination of getPreferredScrollableViewportSize,
getScrollableTracksViewportWidth and getScrollableTracksViewportHeightis
used,
otherwise
getPreferredSize is used. 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.
JScrollBar, JViewport, ScrollPaneLayout, Scrollable, Component.getPreferredSize(),
setViewportView(java.awt.Component),
setRowHeaderView(java.awt.Component),
setColumnHeaderView(java.awt.Component),
setCorner(java.lang.String,
java.awt.Component), setViewportBorder(javax.swing.border.Border)| Field Summary | |
protected
JViewport |
columnHeader
The column header child. |
protected
JScrollBar |
horizontalScrollBar
The scrollpane's horizontal scrollbar child. |
protected
int |
horizontalScrollBarPolicy
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 |
rowHeader
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
JScrollBar |
verticalScrollBar
The scrollpane's vertical scrollbar child. |
protected
int |
verticalScrollBarPolicy
The display policy for the vertical scrollbar. |
protected
JViewport |
viewport
The scrollpane's viewport child. |
| Fields inherited from class javax.swing.JComponent |
accessibleContext,
listenerList,
TOOL_TIP_TEXT_KEY,
ui,
UNDEFINED_CONDITION,
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT,
WHEN_FOCUSED,
WHEN_IN_FOCUSED_WINDOW |
| Fields inherited from class java.awt.Component |
BOTTOM_ALIGNMENT,
CENTER_ALIGNMENT,
LEFT_ALIGNMENT,
RIGHT_ALIGNMENT,
TOP_ALIGNMENT |
| Fields inherited from interface java.awt.image.ImageObserver |
ABORT,
ALLBITS,
ERROR,
FRAMEBITS,
HEIGHT,
PROPERTIES,
SOMEBITS,
WIDTH |
| Constructor Summary | |
JScrollPane()
Creates an empty (no viewport view) JScrollPane where both
horizontal and vertical scrollbars appear when needed. |
|
JScrollPane(Component view) Creates a JScrollPane
that displays the contents of the specified component, where both
horizontal and vertical scrollbars appear whenever the component's
contents are larger than the view. |
|
JScrollPane(Component view, int vsbPolicy,
int hsbPolicy) Creates a JScrollPane
that displays the view component in a viewport whose view position can
be controlled with a pair of scrollbars. |
|
JScrollPane(int vsbPolicy,
int hsbPolicy) Creates an empty (no viewport view) JScrollPane with specified
scrollbar policies. |
|
| Method Summary | |
JScrollBar |
createHorizontalScrollBar()
Returns a JScrollPane.ScrollBar
by default. |
JScrollBar |
createVerticalScrollBar()
Returns a JScrollPane.ScrollBar
by default. |
protected
JViewport |
createViewport()
Returns a new JViewport by default. |
AccessibleContext |
getAccessibleContext()
Gets the AccessibleContext associated with this JScrollPane. |
JViewport |
getColumnHeader()
Returns the column header. |
Component |
getCorner(String key) Returns the component at the specified corner. |
JScrollBar |
getHorizontalScrollBar()
Returns the horizontal scroll bar that controls the viewport's horizontal view position. |
int |
getHorizontalScrollBarPolicy()
Returns the horizontal scroll bar policy value. |
JViewport |
getRowHeader()
Returns the row header. |
ScrollPaneUI |
getUI()
Returns the look and feel (L&F) object that renders this component. |
String |
getUIClassID()
Returns the suffix used to construct the name of the L&F class used to render this component. |
JScrollBar |
getVerticalScrollBar()
Returns the vertical scroll bar that controls the viewports vertical view position. |
int |
getVerticalScrollBarPolicy()
Returns the vertical scroll bar policy value. |
JViewport |
getViewport()
Returns the current JViewport. |
Border |
getViewportBorder()
Returns the Border object that surrounds the viewport. |
Rectangle |
getViewportBorderBounds()
Returns the bounds of the viewport's border. |
boolean |
isValidateRoot()
Calls revalidate
on any descendant of this JScrollPane. |
boolean |
isWheelScrollingEnabled()
Indicates whether or not scrolling will take place in response to the mouse wheel. |
protected
String |
paramString()
Returns a string representation of this JScrollPane. |
void |
setColumnHeader(JViewport columnHeader) Removes the old columnHeader, if it exists. |
void |
setColumnHeaderView(Component view) Creates a column-header viewport if necessary, sets its view, and then adds the column-header viewport to the scrollpane. |
void |
setComponentOrientation(ComponentOrientation co) Sets the orientation for the vertical and horizontal scrollbars as determined by the ComponentOrientation argument. |
void |
setCorner(String key, Component corner) Adds a child that will appear in one of the scroll panes corners, if there's room. |
void |
setHorizontalScrollBar(JScrollBar horizontalScrollBar)
Adds the scrollbar that controls the viewport's horizontal view position to the scrollpane. |
void |
setHorizontalScrollBarPolicy(int policy)
Determines when the horizontal scrollbar appears in the scrollpane. |
void |
setLayout(LayoutManager layout) Sets the layout manager for this JScrollPane. |
void |
setRowHeader(JViewport rowHeader) Removes the old rowHeader, if it exists. |
void |
setRowHeaderView(Component view) Creates a row-header viewport if necessary, sets its view and then adds the row-header viewport to the scrollpane. |
void |
setUI(ScrollPaneUI ui) Sets the ScrollPaneUI
object that provides the look and feel (L&F) for this component. |
void |
setVerticalScrollBar(JScrollBar verticalScrollBar)
Adds the scrollbar that controls the viewports vertical view position to the scrollpane. |
void |
setVerticalScrollBarPolicy(int policy)
Determines when the vertical scrollbar appears in the scrollpane. |
void |
setViewport(JViewport viewport) Removes the old viewport (if there is one); forces the viewPosition of the new viewport to be in the +x,+y quadrant; syncs up the row and column headers (if there are any) with the new viewport; and finally syncs the scrollbars and headers with the new viewport. |
void |
setViewportBorder(Border viewportBorder)
Adds a border around the viewport. |
void |
setViewportView(Component view) Creates a viewport if necessary and then sets its view. |
void |
setWheelScrollingEnabled(boolean handleWheel)
Enables/disables scrolling in response to movement of the mouse wheel. |
void |
updateUI()
Replaces the current ScrollPaneUI object with a version from the
current default look and feel. |
| Field Detail |
protected int verticalScrollBarPolicy
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED.
setVerticalScrollBarPolicy(int)protected int horizontalScrollBarPolicy
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED.
setHorizontalScrollBarPolicy(int)protected JViewport viewport
JViewport.
setViewport(javax.swing.JViewport)protected JScrollBar verticalScrollBar
JScrollBar.
setVerticalScrollBar(javax.swing.JScrollBar)protected JScrollBar horizontalScrollBar
JScrollBar.
setHorizontalScrollBar(javax.swing.JScrollBar)protected JViewport rowHeader
null.
setRowHeader(javax.swing.JViewport)protected JViewport columnHeader
null.
setColumnHeader(javax.swing.JViewport)protected Component lowerLeft
null.
setCorner(java.lang.String,
java.awt.Component)protected Component lowerRight
null.
setCorner(java.lang.String,
java.awt.Component)protected Component upperLeft
null.
setCorner(java.lang.String,
java.awt.Component)protected Component upperRight
null.
setCorner(java.lang.String,
java.awt.Component)| Constructor Detail |
public JScrollPane(Component view,
int vsbPolicy,
int hsbPolicy)
JScrollPane that displays the view
component in a viewport whose view position can be controlled with a
pair of scrollbars. The scrollbar policies specify when the scrollbars
are displayed, For example, if vsbPolicy is VERTICAL_SCROLLBAR_AS_NEEDED
then the vertical scrollbar only appears if the view doesn't fit
vertically. The available policy settings are listed at setVerticalScrollBarPolicy(int)
and setHorizontalScrollBarPolicy(int).
view - the component to display in the scrollpanes
viewportvsbPolicy - an integer that specifies the vertical
scrollbar policyhsbPolicy - an integer that specifies the horizontal
scrollbar policysetViewportView(java.awt.Component)public JScrollPane(Component view)
JScrollPane that displays the contents of
the specified component, where both horizontal and vertical scrollbars
appear whenever the component's contents are larger than the view.
view - the component to display in the scrollpane's
viewportsetViewportView(java.awt.Component)public JScrollPane(int vsbPolicy,
int hsbPolicy)
JScrollPane
with specified scrollbar policies. The available policy settings are
listed at setVerticalScrollBarPolicy(int)
and setHorizontalScrollBarPolicy(int).
vsbPolicy - an integer that specifies the vertical
scrollbar policyhsbPolicy - an integer that specifies the horizontal
scrollbar policysetViewportView(java.awt.Component)public JScrollPane()
JScrollPane
where both horizontal and vertical scrollbars appear when needed.
| Method Detail |
public ScrollPaneUI getUI()
ScrollPaneUI object that renders this
componentsetUI(javax.swing.plaf.ScrollPaneUI)public void setUI(ScrollPaneUI ui)
ScrollPaneUI object that provides the look
and feel (L&F) for this component.
ui - the ScrollPaneUI L&F
objectgetUI()public void updateUI()
ScrollPaneUI object with a
version from the current default look and feel. To be called when the
default look and feel changes.
updateUI
in class JComponentJComponent.updateUI(),
UIManager.getUI(javax.swing.JComponent)public String getUIClassID()
getUIClassID
in class JComponentJComponent.getUIClassID(),
UIDefaults.getUI(javax.swing.JComponent)public void setLayout(LayoutManager layout)
JScrollPane. This
method overrides setLayout in java.awt.Container
to ensure that only LayoutManagers which are subclasses
of ScrollPaneLayout can be used in a JScrollPane.
If
layout is non-null, this will invoke syncWithScrollPane
on it.
setLayout
in class Containerlayout - the specified layout manager ClassCastException - if layout
is not a ScrollPaneLayoutContainer.getLayout(),
Container.setLayout(java.awt.LayoutManager)public boolean isValidateRoot()
revalidate on any descendant of this JScrollPane.
For
example,
the
viewport's view, will cause a request to be queued
that will validate the JScrollPane and all its
descendants.
isValidateRoot
in class JComponentJComponent.revalidate()public int getVerticalScrollBarPolicy()
verticalScrollBarPolicy propertysetVerticalScrollBarPolicy(int)public void setVerticalScrollBarPolicy(int policy)
policy - one of the three values listed above IllegalArgumentException - if policy
is not one of the legal values shown abovegetVerticalScrollBarPolicy()public int getHorizontalScrollBarPolicy()
horizontalScrollBarPolicy propertysetHorizontalScrollBarPolicy(int)public void setHorizontalScrollBarPolicy(int policy)
policy - one of the three values listed above IllegalArgumentException - if policy
is not one of the legal values shown abovegetHorizontalScrollBarPolicy()public Border getViewportBorder()
Border object that surrounds the
viewport.
viewportBorder propertysetViewportBorder(javax.swing.border.Border)public void setViewportBorder(Border viewportBorder)
JViewport doesn't support the JComponent
border property. Similarly setting the JScrollPanes
viewport doesn't affect the viewportBorder property.
The default value of this property is computed by the look and feel implementation.
viewportBorder - the border to be addedgetViewportBorder(),
setViewport(javax.swing.JViewport)public Rectangle getViewportBorderBounds()
Rectangle object specifying the viewport
borderpublic JScrollBar createHorizontalScrollBar()
JScrollPane.ScrollBar by default.
Subclasses may override this method to force ScrollPaneUI
implementations to use a JScrollBar subclass. Used by ScrollPaneUI
implementations to create the horizontal scrollbar.
JScrollBar with a horizontal orientationJScrollBarpublic JScrollBar getHorizontalScrollBar()
horizontalScrollBar propertysetHorizontalScrollBar(javax.swing.JScrollBar)public void setHorizontalScrollBar(JScrollBar horizontalScrollBar)
JScrollPane
creates horizontal and vertical scrollbars by default.
horizontalScrollBar - the horizontal scrollbar
to be addedcreateHorizontalScrollBar(),
getHorizontalScrollBar()public JScrollBar createVerticalScrollBar()
JScrollPane.ScrollBar by default.
Subclasses may override this method to force ScrollPaneUI
implementations to use a JScrollBar subclass. Used by ScrollPaneUI
implementations to create the vertical scrollbar.
JScrollBar with a vertical orientationJScrollBarpublic JScrollBar getVerticalScrollBar()
verticalScrollBar propertysetVerticalScrollBar(javax.swing.JScrollBar)public void setVerticalScrollBar(JScrollBar verticalScrollBar)
JScrollPane
creates vertical and horizontal scrollbars by default.
verticalScrollBar - the new vertical scrollbar
to be addedcreateVerticalScrollBar(),
getVerticalScrollBar()protected JViewport createViewport()
JViewport by default. Used to create
the viewport (as needed) in setViewportView, setRowHeaderView,
and
setColumnHeaderView. Subclasses may override this
method to return a subclass of JViewport.
JViewportpublic JViewport getViewport()
JViewport.
viewport propertysetViewport(javax.swing.JViewport)public void setViewport(JViewport viewport)
Most applications will find it more convenient to use setViewportView
to add a viewport and a view to the scrollpane.
viewport - the new viewport to be used; if
viewport is null, the old viewport is still removed and
the new viewport is set to nullcreateViewport(),
getViewport(),
setViewportView(java.awt.Component)public void setViewportView(Component view)
JScrollPane
constructor should use this method to specify the scrollable child
that's going to be displayed in the scrollpane. For example:
JScrollPane scrollpane = new JScrollPane();Applications should not add children directly to the scrollpane.
scrollpane.setViewportView(myBigComponentToScroll);
view - the component to add to the viewportsetViewport(javax.swing.JViewport),
JViewport.setView(java.awt.Component)public JViewport getRowHeader()
rowHeader propertysetRowHeader(javax.swing.JViewport)public void setRowHeader(JViewport rowHeader)
null, syncs the y coordinate of its viewPosition
with the viewport (if there is one) and then adds it to the scrollpane.
Most applications will find it more convenient to use setRowHeaderView
to add a row header component and its viewport to the scrollpane.
rowHeader - the new row header to be used; if null
the old row header is still removed and the new rowHeader is set to nullgetRowHeader(),
setRowHeaderView(java.awt.Component)public void setRowHeaderView(Component view)
JScrollPane scrollpane = new JScrollPane();
scrollpane.setViewportView(myBigComponentToScroll);
scrollpane.setRowHeaderView(myBigComponentsRowHeader);
view - the component to display as the row headersetRowHeader(javax.swing.JViewport),
JViewport.setView(java.awt.Component)public JViewport getColumnHeader()
columnHeader propertysetColumnHeader(javax.swing.JViewport)public void setColumnHeader(JViewport columnHeader)
null, sync the x coordinate of the its
viewPosition with the viewport (if there is one) and then add it to the
scrollpane.
Most applications will find it more convenient to use setRowHeaderView
to add a row header component and its viewport to the scrollpane.
getColumnHeader(),
setColumnHeaderView(java.awt.Component)public void setColumnHeaderView(Component view)
JScrollPane scrollpane = new JScrollPane();
scrollpane.setViewportView(myBigComponentToScroll);
scrollpane.setColumnHeaderView(myBigComponentsColumnHeader);
view - the component to display as the column
headersetColumnHeader(javax.swing.JViewport),
JViewport.setView(java.awt.Component)public Component getCorner(String key)
key
value specifying the corner is one of:
key - one of the values as shown above null if key
is invalid:
setCorner(java.lang.String,
java.awt.Component)public void setCorner(String key,
Component corner)
Although "corner" doesn't match any beans property signature, PropertyChange
events are generated with the property name set to the corner key.
key - identifies which corner the component will
appear incorner - one of the following components:
IllegalArgumentException - if
corner key is invalidpublic void setComponentOrientation(ComponentOrientation co)
ComponentOrientation argument.
setComponentOrientation
in class Componentco - one of the following values:
ComponentOrientationpublic boolean isWheelScrollingEnabled()
setWheelScrollingEnabled(boolean)public void setWheelScrollingEnabled(boolean handleWheel)
handleWheel - true if scrolling
should be done automatically for a MouseWheelEvent, false
otherwise.isWheelScrollingEnabled(),
MouseWheelEvent, MouseWheelListenerprotected String paramString()
JScrollPane.
This
method
is
intended to be used only for debugging purposes, and the
content and format of the returned string may vary between
implementations. The returned string may be empty but may not be null.
paramString
in class JComponentJScrollPane.public AccessibleContext getAccessibleContext()
getAccessibleContext
in interface AccessiblegetAccessibleContext
in class JComponent