Module java.desktop
Package java.awt

Class ScrollPane

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

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

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

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

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

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

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

默认情况下启用使用带有滚轮的鼠标进行滚动。可以使用setWheelScrollingEnabled来禁用此功能。可以通过设置水平和垂直Adjustables的块和单位增量来自定义滚动。有关如何分派鼠标滚轮事件的信息,请参阅MouseWheelEvent的类描述。

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

参见:
  • Field Details

    • 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
      指定水平/垂直滚动条应始终不显示,而不考虑滚动窗格和子组件的相应大小。
      参见:
  • Constructor Details

  • Method Details

    • 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()
      返回值:
      水平滚动条的状态
      参见:
    • setScrollPosition

      public void setScrollPosition(int x, int y)
      滚动到子组件中指定的位置。只有当滚动窗格包含子组件时,才能调用此方法。指定超出子组件合法滚动范围的位置将滚动到最接近的合法位置。合法范围定义为矩形:x = 0,y = 0,宽度 =(子组件宽度 - 视口宽度),高度 =(子组件高度 - 视口高度)。这是一个方便的方法,与表示滚动条状态的可调对象进行交互。
      参数:
      x - 要滚动到的x位置
      y - 要滚动到的y位置
      抛出:
      NullPointerException - 如果滚动窗格不包含子组件
    • setScrollPosition

      public void setScrollPosition(Point p)
      滚动到子组件中指定的位置。只有当滚动窗格包含子组件并且指定的位置在子组件的合法滚动范围内时,才能调用此方法。指定超出子组件合法滚动范围的位置将滚动到最接近的合法位置。合法范围定义为矩形:x = 0,y = 0,宽度 =(子组件宽度 - 视口宽度),高度 =(子组件高度 - 视口高度)。这是一个方便的方法,与表示滚动条状态的可调对象进行交互。
      参数:
      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()
      Deprecated.
      As of JDK version 1.1, replaced by doLayout().
      覆盖:
      layout 在类 Container
    • printComponents

      public void printComponents(Graphics g)
      在此滚动窗格中打印组件。
      覆盖:
      printComponents 在类 Container
      参数:
      g - 指定的Graphics窗口
      参见:
    • 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 - 鼠标滚轮事件
      自JDK版本:
      1.4
      参见:
    • eventTypeEnabled

      protected boolean eventTypeEnabled(int type)
      如果启用了滚轮滚动,则对MouseWheelEvents返回true
      自JDK版本:
      1.4
    • setWheelScrollingEnabled

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

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

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