滚动体系结构,这个体系结构包括两个轻量Swing容器、一个Scrollable接口、和一个JScrollBar类。其中,这两个轻量Swing容器是JViewport和JScmollPanc,设计这个Scrollable接口来支持有特殊滚动需求的组件。

JViewport实例很少被实例化,也很少被直接使用,然而,本章仍将用相当大的篇幅来介绍JViewport类,因为它是Swing滚动体系结构的基础组件。

设计JScrollPane组件来替代AWT的重量组件ScrollPane。JScrollPane在AWT的ScrollPane基础上做了许多改进,包括具有配置行头部和列头部的能力和具有指定在滚动窗格角部组件的能力。

Scrollable接口是为表格、树、文本组件和列表等包含数据行或数据列的可滚动组
的。

JScrollBar组件是一个用来实现手动滚动的滚动条。虽然Swing 的JScrollPane组件在大多数滚动情况是足够用了,但是,有时为了性能或资源的考虑,还必须实现手动滚动。在这种情况下,可以用JScrollBar组件来滚动容器的内容。

1、JViewport

JViewport类是Swing滚动体系结构的基础。就如它的名字所指出的那样,JViewport的实例提供一个视口,视图的特定区域可以显示在这个视口中。可以操纵由视口显示的视图的位置,以便在不同的时刻,使不同的视图区域出现在这个视口中。

视口与它们的视围:

Swing视口显示组件的一部分,这个组件称作视口的视图。JViewport类维护视图位置属性,这个属性代表在视口左上角显示的视图坐标。还为视图位置属性提供了设置和获取的方法。

Swing (和AWT)组件的坐标系统定义坐标(0,0)在这个组件的左上角,X和Y值分别从左到右递增和从上到下递增。因此,用下面的原则来移动一个视口的视图:

  • 把视图向上移动:增加视困的¥坐标。
  • 把视困向下移动:减少视困的Y坐标。
  • 把视困向左移动:增加视图的X坐标。
  • 把视图向右移动:增加视困的X坐标。
2、JScrollPane

JScrollPane类是一个轻量Swing容器,它包含一个带可选滚动条的视口和行头部或列头部。

3、Scrollable接口

任何Swing或AWT组件都可以在.JScrollPane的一个实例中滚动。实际上,实现Scrollable接口的组件有特殊的滚动需求。下面的Swing 组件实现Scrollable接口:

  • Jlist
  • JTable
  • JTextComponent
  • Tree
4、JScrollBar

Swing 的滚动体系结构(由JViewport类和JScrollPane类组成〉在大多数情况是够用了。如本章前面所说明的,Swing滚动体系结构依靠的是一个固定尺寸的视口,这个视口显示组件的一部分,通常这个组件比与之相关联的视口大(至少在一维上比与之相关联的视口大)
然而,很多情况下这种视口/视图滚动模式不能满足需要。例如,如果与视口相关联的视图包含大量的数据,那么由于性能和资源的考虑,建立视图和通过调整视口中视图的位置来进行滚动是不切实际的。幸运的是,Swing提供了滚动条类,它通过实现手动滚动来替代 Swing的滚动体系。