javax.swing

接口
异常
java.lang.Object
  继承者 java.awt.Component
      继承者 java.awt.Container
          继承者 javax.swing.JComponent
              继承者 javax.swing.JScrollPane
所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible, ScrollPaneConstants

public class JScrollPane
     
extends JComponent
implements ScrollPaneConstants, Accessible

提供轻量级组件的 scrollable 视图。JScrollPane 管理视口、可选的垂直和水平滚动条以及可选的行和列标题视口。有关 JScrollPane 的面向任务的文档,请参阅 The Java Tutorial 中的 How to Use Scroll Panes 一节。注意,JScrollPane 不支持重量级组件。

以下文本是对此图像的描述。

JViewport 为数据源提供一个窗口或“视口”,例如,一个文本文件。该数据源为由 JViewport 视图显示的“scrollable 客户端”(即数据模型)。 JScrollPane 基本上由 JScrollBar、一个 JViewport 以及它们之间的连线组成,如右图所示。

除了滚动条和视口之外,JScrollPane 也可以有一个列标题和一个行标题。这二者都是 JViewport 对象,可用 setRowHeaderViewsetColumnHeaderView 指定。列标题视口自动左右滚动,跟踪主视口的左右滚动。(但是它不会垂直滚动。)行标题的滚动方式与此类似。

在两个滚动条的交汇处、行标题与列标题的交汇处,或者滚动条与其中一个标题的交汇处,两个组件在很接近角的地方停止,留下一个默认情况下为空的矩形空间。四个角都有可能存在这些空间。在上图中,右上角存在该空间,由标签“角组件”标识。

可使用 setCorner 方法替换许多的这些空白空间,以便将组件添加到一个特定角。(注:相同的组件不能添加到多个角。)如果想要为滚动窗格增加一些额外的装饰或功能,那么此方法很有用。每个角组件的大小都完全由标题和/或包围它的滚动条的大小确定。

只有角组件存在于其中的角中有空白空间时该角组件才是可见的。例如,设想一个设置在滚动窗格(带有列标题)右上角的组件。如果滚动窗格的垂直滚动条不存在(可能因为视图组件尚未大到需要它的地步),那么该角组件将不会显示(因为标题和垂直滚动条的交汇点所创建的角中没有空白空间)。要强制使滚动条始终显示,可使用 setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_ALWAYS) 确保该角组件的空间始终存在。

要围绕主视口添加一个边界,可使用 setViewportBorder。(当然,也可以使用 setBorder 围绕整个滚动窗格添加一个边界。)

应该执行的一个常见操作是设置背景颜色,此颜色可在主视口小于视口或透明时使用。使用 scrollPane.getViewport().setBackground() 设置视口的背景色可实现此目的。设置视口而不是滚动窗格的颜色的原因是,默认情况下,JViewport 为不透明,还有一些其他属性,这意味着它将用其背景色完全填充背景。因此当 JScrollPane 绘制其背景时,视口通常将在它上面绘制。

默认情况下,JScrollPane 使用 ScrollPaneLayout 处理其子组件的布局。ScrollPaneLayout 使用以下两个方法之一确定视口视图的大小:

  1. 如果视图实现了 Scrollable,将使用 getPreferredScrollableViewportSizegetScrollableTracksViewportWidthgetScrollableTracksViewportHeight 的组合,否则使用
  2. getPreferredSize

警告:Swing 不是线程安全的。有关更多信息,请参阅 Swing's Threading Policy

警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans 包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 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)

嵌套类摘要
protected  class JScrollPane.AccessibleJScrollPane
          此类实现 JScrollPane 类的可访问性支持。
protected  class JScrollPane.ScrollBar
          默认情况下,JScrollPane 创建的滚动条为此类的实例。
 
从类 javax.swing.JComponent 继承的嵌套类/接口
JComponent.AccessibleJComponent
 
从类 java.awt.Container 继承的嵌套类/接口
Container.AccessibleAWTContainer
 
从类 java.awt.Component 继承的嵌套类/接口
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
字段摘要
protected  JViewport columnHeader
          列标题子级。
protected  JScrollBar horizontalScrollBar
          滚动窗格的水平滚动条子级。
protected  int horizontalScrollBarPolicy
          用于水平滚动条的显示策略。
protected  Component lowerLeft
          在左下角显示的组件。
protected  Component lowerRight
          在右下角显示的组件。
protected  JViewport rowHeader
          行标题子级。
protected  Component upperLeft
          在左上角显示的组件。
protected  Component upperRight
          在右上角显示的组件。
protected  JScrollBar verticalScrollBar
          滚动窗格的垂直滚动条子级。
protected  int verticalScrollBarPolicy
          用于垂直滚动条的显示策略。
protected  JViewport viewport
          滚动窗格的视口子级。
 
从类 javax.swing.JComponent 继承的字段
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
从类 java.awt.Component 继承的字段
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
从接口 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
 
从接口 java.awt.image.ImageObserver 继承的字段
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
构造方法摘要
JScrollPane()
          创建一个空的(无视口的视图)JScrollPane,需要时水平和垂直滚动条都可显示。
JScrollPane(Component view)
          创建一个显示指定组件内容的 JScrollPane,只要组件的内容超过视图大小就会显示水平和垂直滚动条。
JScrollPane(Component view, int vsbPolicy, int hsbPolicy)
          创建一个 JScrollPane,它将视图组件显示在一个视口中,视图位置可使用一对滚动条控制。
JScrollPane(int vsbPolicy, int hsbPolicy)
          创建一个具有指定滚动条策略的空(无视口的视图)JScrollPane
 
方法摘要
 JScrollBar createHorizontalScrollBar()
          默认返回 JScrollPane.ScrollBar
 JScrollBar createVerticalScrollBar()
          默认返回 JScrollPane.ScrollBar
protected  JViewport createViewport()
          默认返回新的 JViewport
 AccessibleContext getAccessibleContext()
          获取与此 JScrollPane 相关联的 AccessibleContext。
 JViewport getColumnHeader()
          返回列标题。
 Component getCorner(String key)
          返回位于指定角的组件。
 JScrollBar getHorizontalScrollBar()
          返回控制视口的水平视图位置的水平滚动条。
 int getHorizontalScrollBarPolicy()
          返回水平滚动条策略值。
 JViewport getRowHeader()
          返回行标题。
 ScrollPaneUI getUI()
          返回呈现此组件的外观 (L&F) 对象。
 String getUIClassID()
          返回用于构造呈现此组件时所用 L&F 类的名称的后缀。
 JScrollBar getVerticalScrollBar()
          返回控制视口垂直视图位置的垂直滚动条。
 int getVerticalScrollBarPolicy()
          返回垂直滚动条策略值。
 JViewport getViewport()
          返回当前的 JViewport
 Border getViewportBorder()
          返回围绕该视口的 Border 对象。
 Rectangle getViewportBorderBounds()
          返回视口边界的范围。
 boolean isValidateRoot()
          重写以返回 true,这样任何在此 JScrollPane 的任何后代上对 revalidate 的调用将使从此 JScrollPane 开始的整个树接受验证。
 boolean isWheelScrollingEnabled()
          指示是否进行滚动以响应鼠标滚轮。
protected  String paramString()
          返回此 JScrollPane 的字符串表示形式。
 void setColumnHeader(JViewport columnHeader)
          移除旧的 columnHeader,如果有的话;如果新的 columnHeader 不为 null,将其 viewPosition 的 x 坐标与视口(如果有)同步然后将其添加到滚动窗格。
 void setColumnHeaderView(Component view)
          创建一个列标题视口(如果有必要),设置其视图然后将此列标题视口添加到滚动窗格。
 void setComponentOrientation(ComponentOrientation co)
          设置由 ComponentOrientation 参数确定的垂直和水平滚动条方向。
 void setCorner(String key, Component corner)
          添加一个将显示在一个滚动窗格角中的子级,如果有空间的话。
 void setHorizontalScrollBar(JScrollBar horizontalScrollBar)
          将控制视口水平视图位置的水平滚动条添加到滚动窗格中。
 void setHorizontalScrollBarPolicy(int policy)
          确定水平滚动条何时显示在滚动窗格上。
 void setLayout(LayoutManager layout)
          设置此 JScrollPane 的布局管理器。
 void setRowHeader(JViewport rowHeader)
          移除旧的 rowHeader,如果存在;如果新的 rowHeader 不为 null,将其 viewPosition 的 y 坐标与视口(如果有)同步然后将其添加到滚动窗格。
 void setRowHeaderView(Component view)
          创建一个行标题视口(如果有必要),设置其视图然后将此行标题视口添加到滚动窗格。
 void setUI(ScrollPaneUI ui)
          设置 ScrollPaneUI 对象,它为此组件提供外观 (L&F)。
 void setVerticalScrollBar(JScrollBar verticalScrollBar)
          将控制视口垂直视图位置的滚动条添加到滚动窗格中。
 void setVerticalScrollBarPolicy(int policy)
          确定垂直滚动条何时显示在滚动窗格上。
 void setViewport(JViewport viewport)
          移除旧视口(如果有);强制新视口的 viewPosition 位于 +x,+y 象限中;将行和列标题(如果有)与新视口同步;最后将滚动条和标题与新视口同步。
 void setViewportBorder(Border viewportBorder)
          围绕视口添加一个边界。
 void setViewportView(Component view)
          创建一个视口(如果有必要)并设置其视图。
 void setWheelScrollingEnabled(boolean handleWheel)
          启用/禁用对鼠标滚轮滚动的移动响应。
 void updateUI()
          用一个来自当前默认外观的 ScrollPaneUI 替换当前的 ScrollPaneUI 对象。
 
从类 javax.swing.JComponent 继承的方法
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
从类 java.awt.Container 继承的方法
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
从类 java.awt.Component 继承的方法
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange,

JDK 1.6 中文手册