1、计时器

Swing 提供一个Timer类,Timer类的实例可以有–个或多个与它们相关联的动作监听器。当一个计时器“振铃”时,意味着它激发了一个动作事件,即每个与计时器相关联的ActionListener激发了它的actionPerformed方法。

可以设置计时器只振铃一次,或按指定的时间间隔重复振铃。每个计时器可以有两种延迟(以毫秒为单位)。Initial delay(初始延迟)指定在计时器第–次振铃之前所需时间量。periodicdelay(定期延迟)指定计时器两次振铃之间所需时间量。缺省时,所有的计时器都是重复计时器。

2、事件监听列表

swing.event包包括一个EventL.istenerList类,这个类用来维护–个不同类型的事件监听器列表。在效果上,Swing 的EventListenerl aist类替代了AWT的 AWTEventMulticaster类,EventListenerList 的实例为所有激发事件的Swing组件所使用。EventListenerList的实例可以用于任何类型的事件监听器,而AWTEventMulticaster只限于AWT所支持的事件监听器类型集所使用。

鼓励开发人员使用EventListenerList类来维护激发事件的定制组件(或任何其他类)的事件监听器的列表。使用EventlistenerList类必须遵循下面三个步骤:
1)实现一个把监听器添加到列表中的addXXXListener方法。

2)实现一个从列表中删除监听器的removeXXXListener方法。

3)实现一个在列表上循环并把事件发送给监听器的fireXXXPerformed方法。

3、Swing实用工具

Swing包包括一个SwingUtilities类,这个类有30多个static实用方法。这些方法按功能分成多个组,如下所示:

  • 计算方法。这些方法除了计算特定字体规格的字符串的宽度外,还计算两个矩形间的交集、并集和差集。
  • 转换方法。这些方法把一种组件坐标系统中的事件、点和矩形转换为另一种组件坐标系统中的事件、点和矩形。
  • 可访问方法。这些方法返回给定组件的可访问信息。
  • 检索方法。这些方法检索与给定组件有关的对象,如焦点拥有者、原型和组件所在的根窗格等。
  • 从事件派发线程以外的其他线程执行代码的方法。
  • 用来确定相互关系的 boolean方法。例如,一个组件是另一个组件的原型吗?当前的线程是事件派发线程吗?给定一个特定的鼠标事件,哪个鼠标按钮被按下了?
  • 一个给定组件的布局、绘制和UI代表方法。
4、Swing常量

Swing 在 swing 包中提供了三个定义常量的接口。SwingConstants类定义位置常量,Scroll-PaneConstants 类和WindowConstants类为它们各自的组件定义常量。

5、BoxLayout和Box类

Swing提供了一个布局管理器(BoxLayout)来水平或垂直布局各组件,还提供了一个容器( Box),这个容器利用一个BoxLayout类。

5.1 BoxLayout类

BoxLayout沿水平线或垂直线布局组件。在构造时指定一个轴(BoxLayout.X _ AXIS或BoxLayout.Y _ AXIS),并且确定组件的方向。
沿着x轴布局的组件为水平布局,沿y轴布局的组件为垂直布局。一般情况下按组件添加到容器中的顺序来从上到下或从左到右地布局组件。

5.2 Box类

Box类与BoxLayout类关系最为密切,Box类是-一个java.awt . Container 的扩展,它用一个BoxLayout实例来布局组件。使Box类真正闪光的地方是它提供的一些static方法,这些方法返回三种组件中的一种,这三种组件是:胶体( glue)、膨胀体( struts)和固定区(rigid areas)。

6、进度监视器

为监视进度,Swing还提供了两个类,它们创建进度条并在对话框中显示进度条,这两个类是:ProgressMonitor和 ProgressMonitorInputStream。前者提供设置进度的方法,并更新由监视器创建的进度条。后者是java . io. FilterInputStream的一个扩展,它除显示一个包含进度条的对话框外(如果正在读的流是费时的操作的话),其使用方式与任何其他输入流的使用方式相同。

6.1 ProgressMonitor

ProgressMonitor类通过显示一个进度对话框来监视费时任务的进度。进度监视器在两个属性的帮助下决定一个操作任务所花费的时间是否很长,需要显示进度对话框,这两个属性是:millisToDecideToPopup和millisToPopup,缺省时,它们分别是500毫秒和2000毫秒(0.5秒和2秒)。这两个属性都是可设置的。

从创建进度监视器时开始,当millisToDecideToPopup指定的毫秒过去时,进度监视器根据到目前为止已完成任务的百分比来计算完成这个操作所需花费的时间。如果所需的整个时间比millisToDecideToPopup指定的时间长,则显示一个进度对话框。

使用进度监视器的步骤如下:

1)实例化一个ProgressMonitor实例。

2)定期调用ProgressMonitor.setProgress ( int)(也可选择调用ProgressMonitor. setNote (String))。

3)当操作完成时,调用ProgressMonitor.close ( )。

6.2 PregressMonitorInputStream

ProgressMonitorlnputStream ( java.io. FilterInputStream的一个扩展)创建一个进度监视器以监视流的读取。ProgressMonitorInputStream的实例的使用方式与其他输人流的使用方式相同

7、撤销/重复

Swing 提供支持撤消和重复操作的类和接口,这些类和接口在javax. swing.undo包中定义,它代表–般的撤消/重复工具。
可撤消的操作(又称编辑)由UndoableEdit接口来表示。javax. swing.undo包提供四个实现UndoableEdit接口的类,它们是AbstractUndoableEit(别管它的名字,它不是抽象类)、CompoundEdit、UndoManager和 StateEdit。还提供UndoableEditSupport类以援助可撤消编辑的通知监听器。