模块 java.desktop
 java.awt

类 ScrollPane

所有已实现的接口:
ImageObserver , MenuContainer , Serializable , Accessible

public class ScrollPane extends Container implements Accessible
为单个子组件实现自动水平和/或垂直滚动的容器类。滚动条的显示策略可以设置为:
  1. 根据需要:仅在滚动窗格需要时才创建和显示滚动条
  2. 始终:滚动条创建并始终由滚动窗格显示
  3. never:滚动条从未被滚动面板创建或显示

水平和垂直滚动条的状态由两个实现 Adjustable 接口的 ScrollPaneAdjustable 对象(每个维度一个)表示。 API 提供了访问这些对象的方法,以便可以操作 Adjustable 对象的属性(例如 unitIncrement、value 等)。

某些可调整的属性(最小值、最大值、blockIncrement 和 visibleAmount)由滚动窗格根据滚动窗格及其子项的几何形状在内部设置,这些不应由使用滚动窗格的程序设置。

如果滚动条显示策略定义为“从不”,则仍然可以使用 setScrollPosition() 方法以编程方式滚动滚动窗格,并且滚动窗格将移动并适当地裁剪子项的内容。如果程序需要创建和管理自己的可调整控件,则此策略很有用。

滚动条的位置由用户在程序外设置的平台特定属性控制。

此容器的初始大小设置为 100x100,但可以使用 setSize() 重新设置。

默认情况下启用配备滚轮的鼠标上的滚轮滚动。这可以使用 setWheelScrollingEnabled 禁用。可以通过设置水平和垂直 Adjustables 的块和单位增量来自定义滚轮滚动。有关如何调度鼠标滚轮事件的信息,请参阅 MouseWheelEvent 的类描述。

insets用于定义滚动条使用的任何空间和滚动窗格创建的任何边框。 getInsets() 可用于获取insets的当前值。如果 scrollbarsAlwaysVisible 的值为 false,则 insets 的值将根据滚动条当前是否可见而动态变化。

参见:
  • 字段详细信息

    • SCROLLBARS_AS_NEEDED

      public static final int SCROLLBARS_AS_NEEDED
      指定仅当子项的大小在水平/垂直维度上超过滚动窗格的大小时才应显示水平/垂直滚动条。
      参见:
    • SCROLLBARS_ALWAYS

      public static final int SCROLLBARS_ALWAYS
      指定应始终显示水平/垂直滚动条,而不管滚动窗格和子项各自的大小如何。
      参见:
    • SCROLLBARS_NEVER

      public static final int SCROLLBARS_NEVER
      指定无论滚动窗格和子项各自的大小如何,都不应显示水平/垂直滚动条。
      参见:
  • 构造方法详细信息

  • 方法详情

    • addImpl

      protected final void addImpl(Component  comp, Object  constraints, int index)
      将指定的组件添加到此滚动窗格容器。如果滚动窗格有一个现有的子组件,则该组件将被删除并添加新的。
      重写:
      addImpl 在类 Container
      参数:
      comp - 要添加的组件
      constraints - 不适用
      index - 子组件的位置(必须 <= 0)
      参见:
    • getScrollbarDisplayPolicy

      public int getScrollbarDisplayPolicy()
      返回滚动条的显示策略。
      返回:
      滚动条的显示策略
    • getViewportSize

      public Dimension  getViewportSize()
      返回滚动窗格视口的当前大小。
      返回:
      视口的大小(以像素为单位)
    • getHScrollbarHeight

      public int getHScrollbarHeight()
      返回水平滚动条将占据的高度,它与滚动窗格当前是否显示无关。
      返回:
      水平滚动条的高度(以像素为单位)
    • getVScrollbarWidth

      public int getVScrollbarWidth()
      返回垂直滚动条将占据的宽度,这与它当前是否显示在滚动窗格中无关。
      返回:
      垂直滚动条的宽度(以像素为单位)
    • getVAdjustable

      public Adjustable  getVAdjustable()
      返回表示垂直滚动条状态的 ScrollPaneAdjustable 对象。此方法声明的返回类型为 Adjustable 以保持向后兼容性。
      返回:
      垂直滚动条状态
      参见:
    • getHAdjustable

      public Adjustable  getHAdjustable()
      返回表示水平滚动条状态的 ScrollPaneAdjustable 对象。此方法声明的返回类型为 Adjustable 以保持向后兼容性。
      返回:
      水平滚动条状态
      参见:
    • setScrollPosition

      public void setScrollPosition(int x, int y)
      滚动到子组件内的指定位置。仅当滚动窗格包含子项时,对此方法的调用才有效。指定子级合法滚动边界之外的位置将滚动到最近的合法位置。合法边界被定义为矩形:x = 0, y = 0, width = (child width - view port width), height = (child height - view port height)。这是一个方便的方法,它与表示滚动条状态的 Adjustable 对象交互。
      参数:
      x - 要滚动到的 x 位置
      y - 滚动到的 y 位置
      抛出:
      NullPointerException - 如果滚动窗格不包含子项
    • setScrollPosition

      public void setScrollPosition(Point  p)
      滚动到子组件内的指定位置。仅当滚动窗格包含子项且指定位置在子项的合法滚动范围内时,对此方法的调用才有效。指定子级合法滚动边界之外的位置将滚动到最近的合法位置。合法边界被定义为矩形:x = 0, y = 0, width = (child width - view port width), height = (child height - view port height)。这是一个方便的方法,它与表示滚动条状态的 Adjustable 对象交互。
      参数:
      p - 表示要滚动到的位置的点
      抛出:
      NullPointerException - 如果 pnull
    • getScrollPosition

      public Point  getScrollPosition()
      返回显示在滚动面板视口的 0,0 位置的子项中的当前 x,y 位置。这是一个方便的方法,它与表示滚动条状态的可调整对象进行交互。
      返回:
      当前滚动位置的坐标位置
      抛出:
      NullPointerException - 如果滚动窗格不包含子项
    • setLayout

      public final void setLayout(LayoutManager  mgr)
      为此容器设置布局管理器。重写此方法以防止设置布局管理器。
      重写:
      setLayout 在类 Container
      参数:
      mgr - 指定的布局管理器
      参见:
    • doLayout

      public void doLayout()
      通过将其子级调整为其首选大小来布置此容器。如果子项的新首选大小导致当前滚动位置无效,则将滚动位置设置为最接近的有效位置。
      重写:
      doLayout 在类 Container
      参见:
    • layout

      @Deprecated public void layout()
      已弃用。
      从 JDK 1.1 版开始,由 doLayout() 取代。
      重写:
      layout 在类 Container
    • printComponents

      public void printComponents(Graphics  g)
      打印此滚动窗格中的组件。
      重写:
      printComponents 在类 Container
      参数:
      g - 指定的图形窗口
      参见:
    • addNotify

      public void addNotify()
      创建滚动窗格的对等项。
      重写:
      addNotify 在类 Container
      参见:
    • paramString

      public String  paramString()
      返回表示此 ScrollPane 状态的字符串。此方法仅用于调试目的,返回字符串的内容和格式可能因实现而异。返回的字符串可能为空,但可能不是 null
      重写:
      paramString 在类 Container
      返回:
      此滚动窗格的参数字符串
    • processMouseWheelEvent

      protected void processMouseWheelEvent(MouseWheelEvent  e)
      通过滚动适当的量来处理传递给此 ScrollPane 的鼠标滚轮事件。

      请注意,如果事件参数为 null,则行为未指定且可能导致异常。

      重写:
      processMouseWheelEvent 在类 Component
      参数:
      e - 鼠标滚轮事件
      自从:
      1.4
      参见:
    • eventTypeEnabled

      protected boolean eventTypeEnabled(int type)
      如果启用滚轮滚动,我们为 MouseWheelEvents 返回 true
      自从:
      1.4
    • setWheelScrollingEnabled

      public void setWheelScrollingEnabled(boolean handleWheel)
      启用/禁用响应鼠标滚轮移动的滚动。默认情况下启用滚轮滚动。
      参数:
      handleWheel - true 如果应为 MouseWheelEvent 自动完成滚动,false 否则。
      自从:
      1.4
      参见:
    • isWheelScrollingEnabled

      public boolean isWheelScrollingEnabled()
      指示是否响应鼠标滚轮进行滚动。默认情况下启用滚轮滚动。
      返回:
      true 如果滚轮启用;否则false
      自从:
      1.4
      参见:
    • getAccessibleContext

      public AccessibleContext  getAccessibleContext()
      获取与此 ScrollPane 关联的 AccessibleContext。对于滚动窗格,AccessibleContext 采用 AccessibleAWTScrollPane 的形式。如有必要,将创建一个新的 AccessibleAWTScrollPane 实例。
      指定者:
      getAccessibleContext 在接口 Accessible
      重写:
      getAccessibleContext 在类 Component
      返回:
      作为此 ScrollPane 的 AccessibleContext 的 AccessibleAWTScrollPane
      自从:
      1.3