定义了用户界面组件与提供对这些组件进行访问的辅助技术之间的协定。如果 Java 应用程序完全支持 Java Accessibility API,则它应该与屏幕读取器、屏幕放大器这样的辅助技术保持兼容和友好。使用完全支持 Java Accessibility API 的 Java 应用程序,将不再需要离屏模型的屏幕读取器 ,因为该 API 提供了离屏模型中通常所包含的所有信息。
使用技巧
Java Accessibility API 包由 8 个 Java 编程语言接口和 6 个 Java 编程语言类组成。以下是对这些接口和类的描述。
Interface Accessible
Interface Accessible 是 Java Accessibility API 的主接口。所有支持 Java Accessibility API 的组件都必须实现此接口。它包含单个方法 getAccessibleContext,此方法返回 AccessibleContext 类的一个实例。Sun 认为,如果 Java 应用程序要与辅助技术兼容,则对于作为该程序用户界面的一部分的每个对象来说,实现此接口是绝对的最低需求。
Class AccessibleContext
AccessibleContext 表示所有可访问对象所返回的最少的信息,它是通过调用实现 Accessible 接口的对象上的 getAccessibleContext 方法获得的。此信息包括对象的可访问名称、描述、职责和状态,以及关于该对象的父对象和
子对象的信息。此外,还包括对 JavaBeans TM 属性更改的支持,从而当可访问的属性值发生更改时,辅助技术能够获悉。AccessibleContext 还包含用于获取更多关于组件的特定可访问信息的方法。如果组件支持它,则这些方法将返回实现以下一个或多个接口的对象。
具体功能
AccessibleAction - 可以执行一个或多个动作的对象。此接口为辅助技术提供了标准机制,以确定这些动作并通知对象执行它们。当调用 AccessibleContext 上的 getAccessibleAction 方法时,任何可以操作的对象都应返回实现此接口的对象。
AccessibleComponent - 具有图形表示形式的对象。此接口为辅助技术提供了标准机制,以确定和设置对象的图形表示形式。当调用 AccessibleContext 上的 getAccessibleComponent 方法时,任何在
屏幕上呈现的对象都应返回实现此接口的对象。
AccessibleSelection - 允许选择其
子对象的对象。此接口为辅助技术提供了标准机制,以确定当前选定的
子对象,并修改选择设置。当调用 AccessibleContext 上的 getAccessibleSelection 方法时,任何具有可选
子对象的对象都应返回实现此接口的对象。
AccessibleText - 在显示器上显示可编辑文本信息的对象。此接口为辅助技术提供了标准机制,用于通过
文本的内容、属性和空间位置来访问该文本。当调用 AccessibleContext 上的 getAccessibleText 方法时,任何包含可编辑文本的对象都应返回实现此接口的对象。
AccessibleHypertext - 在显示器上显示
超文本信息的对象。此接口为辅助技术提供了标准机制,用于通过
超文本的内容、属性和空间位置来访问该
超文本。当调用 AccessibleContext 上的 getAccessibleText 方法时,任何包含
超文本的对象都应返回实现此接口的对象。
AccessibleValue - 支持数字值的对象。此接口为辅助技术提供了标准机制,以确定和设置对象的当前值,以及最小值和最大值。当调用 AccessibleContext 上的 getAccessibleValue 方法时,任何支持数字值的对象都应返回实现此接口的对象。
专业测评
Class AccessibleRole
此类封装了 Accessible 对象职责,该类通过调用 AccessibleContext 上的 getAccessibleRole 方法获得。可访问的职责包括 “
复选框”、“菜单项”、“
面板”等等。这些职责由此类中的
常量(如 AccessibleRole.CHECK_BOX、AccessibleRole.MENU_ITEM 和 AccessibleRole.PANEL)来标识。此类中的
常量存在一个公共对象职责的强类型的枚举。我们有意忽略了此类的公共
构造方法,应用程序应使用此类的一个
常量。虽然此类预定义了一个大的标准职责列表,但它是可扩展的,这样可以在将来添加其他程序员所定义的职责,而无需修改
基类。
Class AccessibleState
常量(如 AccessibleState.ARMED、AccessibleState.BUSY、AccessibleState.CHECKED 和 AccessibleState.FOCUSED)来标识。Accessible 对象的所有状态的集合称为 AccessibleStateSet,它可以通过调用 AccessibleContext 上的 getAccessibleStateSet 方法获得。
主要问题
此类中的常量存在一个公共对象职责的强类型的枚举。我们有意忽略了此类的公共构造方法,应用程序应使用此类的一个常量。虽然此类预定义了一个大的标准职责列表,但它是可扩展的,这样可以在将来添加其他程序员所定义的职责,而无需修改基类。
Class AccessibleStateSet
Class AccessibleBundle
此类用于维护强类型枚举。它是 AccessibleRole 和 AccessibleState 类的超类。程序员一般不与此类直接进行交互,而是使用 AccessibleRole 和 AccessibleState 类。
Interface AccessibleAction
任何能够执行一个或多个动作的对象都应支持 AccessibleAction 接口。此接口为辅助技术提供了标准机制,以确定这些动作并通知对象执行它们。任何可以操作的对象都应支持此接口。
应用程序通过先获取某个对象的 AccessibleContext(参见 Accessible),然后调用 AccessibleContext 上的 getAccessibleAction 方法,能够确定该对象是否支持 AccessibleAction 接口。如果返回值不为 null,则该对象支持此接口。
接口
Interface AccessibleComponent
任何在
屏幕上呈现的对象都应支持 AccessibleComponent 接口。此接口为辅助技术提供了标准机制,以确定和设置对象的图形表示形式。
应用程序通过先调用某个对象的 AccessibleContext(参见 Accessible),然后调用 AccessibleContext 上的 getAccessibleComponent 方法,能够确定该对象是否支持 AccessibleComponent 接口。如果返回值不为 null,则该对象支持此接口。
Interface AccessibleSelection
AccessibleSelection 接口为辅助技术提供了标准机制,以确定当前选定了哪些
子对象,并修改选择设置。任何具有可选子对象的对象都应支持 AccessibleSelection 接口。
应用程序通过先获取某个对象的 AccessibleContext(参见 Accessible),然后调用 AccessibleContext 上的 getAccessibleSelection 方法,能够确定该对象是否支持 AccessibleSelection 接口。如果返回值不为 null,则该对象支持此接口。
种类
Interface AccessibleText
AccessibleText 接口是针对生成丰富的、可编辑的文本 Accessible 的协定。并不是屏幕上显示的所有文本都是富文本和可编辑的(例如对于按钮、标签和菜单中所包含的文本,用户就不能对其进行操作)。但是,如果包含可编辑文本的对象要与辅助技术进行互操作,则它们必须实现 AccessibleText 接口。
此接口支持在像素坐标和给定像素坐标处的
文本之间进行转换,以及检索文本中给定位置处、给定位置前或给定位置后的字母、单词和句子。此接口支持对
文本中给定位置处的
字符属性(字体、字体大小、样式,等等)进行检索,以及获得选中的文本(如果有)、文本长度和文本插入符位置。
应用程序通过先获取某个对象的 AccessibleContext(参见 Accessible),然后调用 AccessibleContext 的 getAccessibleText 方法,能够确定该对象是否支持 AccessibleText 接口。如果返回值不为 null,则该对象支持此接口。
Interface AccessibleHypertext
任何在显示器上显示超文本信息的对象都应支持 AccessibleHypertext 接口。此接口为辅助技术提供了标准机制,用于通过文本的内容、属性和空间位置来访问该文本。它还提供了操作
超链接的标准机制。应用程序通过先获取某个对象的 AccessibleContext(参见 Accessible),然后调用 AccessibleContext 的 AccessibleContext.getAccessibleText() 方法,能够确定该对象是否支持 AccessibleHypertext 接口。如果返回值是一个扩展了 AccessibleHypertext 的类,则该对象支持 AccessibleHypertext。
Interface AccessibleHyperlink
超链接对象应支持 AccessibleHyperlink 接口。通过调用 AccessibleHypertext 对象上的 getLink 方法将返回实现此接口的对象。
Interface AccessibleValue
任何支持数字值的对象(例如滚动条)都应支持 AccessibleValue 接口。此接口为辅助技术提供了标准机制,以确定和设置数字值,以及获取最小值和最大值。
应用程序通过先获取某对象的 AccessibleContext(参见 Accessible),然后调用 AccessibleContext 的 getAccessibleValue 方法,能够确定该对象是否支持 AccessibleValue 接口。如果返回值不为 null,则该对象支持此接口。
从以下版本开始:
JDK1.2