图 1 中显示的可访问性演示 GUI 并不打算完成任何实际工作(即,在该演示背后并没有功能代码);相反,它的目的是演示大多数 Swing GUI 组件,并向您展示如何将可访问性信息添加到每个组件。图 1 显示了演示应用程序的一个面板,其中包括几种常用组件类型,如输入域、单选按钮、复选框和按钮。
图 1. AccessibilityDemo1 的第一幅抓屏

注:在这个 GUI 中,所有按钮都使用了助记符(加下划线的字母),因此,它过度使用了助记符。正如我先前提到的,助记符最好仅用于经过精心挑选的组件,以辅助组件组之间的总体导航。此外,尽管有可能通过标准键盘支持选择跳格,但这样做会需要多次击键。要改进跳格窗格的可用性,您可以通过在 javax.swing.JTabbedPane 或其容器上注册 java.awt.event.KeyListener 来添加直接选择跳格的键。
图 2 是演示应用程序的另一个面板,它包含更复杂的组件类型,如分割窗格、树和显示 HTML 内容的编辑器窗格。图 2 还显示了已定义的组件 ToolTip。
图 2. AccessibilityDemo1 的第 2 幅抓屏

在不访问 AT 阅读器的情况下,很难看到添加可访问性信息的结果。我将在本文的稍后部分中向您展示如何显示该信息。目前,图 3 展示了将可访问性信息添加到应用程序的结果。它是图 1 中 New Document 工具栏按钮(
)的显示所产生的输出的一部分。
图 3. AccessibilityDemo1 的 HTML 转储的子集输出
级别 索引 对象 6 0 javax.swing.JToolBar:17FAFF1D-toolBar0 中的 *javax.swing.JButton:16E7BF1D-button5
组件字段名称 值 name button5 text toolTipText Create a new document value -- 无 -- mnemonic 78 = 'N' AccessibleContext 字段 名称 值 name New role push button stateSet enabled,focusable,visible,showing,opaque indexInParent 0 description Create a new document action javax.swing.JButton$AccessibleJButton@1bd8bf1d value javax.swing.JButton$AccessibleJButton@1bd8bf1d text null editableText -- 无 -- table null icon [Ljavax.accessibility.AccessibleIcon;@2ae9ff1e relationSet -- empty AccessibleRelationSet -- childrenCount 0
文本的颜色表明该项的状态。蓝色文本表明无须担心。黄色文本表明该项可能会引起可访问性问题。红色斜体文本(示例中未显示)表明该项很可能引起可访问性问题。
不应该将使用颜色和其它格式化增强(如使用 斜体)作为特殊文本的唯一表示。通常 AT 设备都不表示这些增强,因此它们可能不会受到注意。尽管这个示例中未作显示,但我建议您除了使用颜色之外还要使用其它指示符,或使用其它指示符而不使用颜色。例如,您可以用括号或星号括住文本。