JAVA ACCESSIBILITY
The Java Accessibility API Interfaces and
Classes
Version 1.1
[Home] [What are they?]
[Overview of Features] [API
Reference]
[FAQ] [Examples]
[Changes]
[Compatibility table]
[JFC Home Page]
Explanation of the Java Accessibility API Interfaces
and Classes
The Java
Accessibility API defines a contract between individual user-interface
components that make up a JavaTM application
and an assistive technology that is providing access to that Java application.
If a Java application fully supports the Java Accessibility API, then it
should be compatible with, and friendly toward, assistive technologies
such as screen readers, screen magnifiers, etc. With a Java application
that fully supports the Java Accessibility API, no screen reader off screen
model would be necessary because the API provides all of the information
normally contained in an off screen model.
The Java
Accessibility API package consists of 8 Java programming language interfaces,
and 6 Java programming language classes. These are described below.
Interface
Accessible is the main interface of the Java Accessibility API.
All components that support the Java Accessibility API must implement this
interface. It contains a single method, getAccessibleContext,
that returns an instance of the class AccessibleContext.
Sun thinks that implementing this interface is the absolute minimum requirement
of every object that is part of the user interface of a Java application,
if that program is to be compatible with assistive technologies.
AccessibleContext
represents the minimum information all accessible objects return and is
obtained by calling the getAccessibleContext method on an object
that implements the Accessible interface. This
information includes the accessible name, description, role,
and state of the object, as well as information
about the parent and children of the object. In addition, JavaBeansTM
property change support is also included to allow assisitive technologies
learn when the values of the accessible properties change. AccessibleContext
also contains methods for obtaining more specific accessibility information
about a component. If the component supports it, these methods will return
an object that implements one or more of the following interfaces:
-
AccessibleAction - the object can
perform one or more actions. This interface provides the standard mechanism
for an assistive technology to determine what those actions are and tell
the object to perform those actions. Any object that can be manipulated
should return an object that implements this interface when the getAccessibleAction
method is called on an AccessibleContext.
-
AccessibleComponent - the object
has a graphical representation. This interface provides the standard mechanism
for an assistive technology to determine and set the graphical representation
of the object. Any object that is rendered on the screen should return
an object that implements this interface when the getAccessibleComponent
method is called on an AccessibleContext.
-
AccessibleSelection - the object
allows its children to be selected. This interface provides the standard
mechanism for an assistive technology to determine the currently selected
children as well as modify the selection set. Any object that has children
that can be selected should return an object that implements this interface
when the getAccessibleSelection method is called on an AccessibleContext.
-
AccessibleText - the object presents
editable textual information on the display. This interface provides the
standard mechanism for an assistive technology to access that text via
its content, attributes, and spatial location. Any object that contains
editable text should return an object that implements this interface when
the getAccessibleText method is called on an AccessibleContext.
-
AccessibleHypertext - the object
presents hypertext information on the display. This interface provides
the standard mechanism for an assistive technology to access that hypertext
via its content, attributes, and spatial location. Any object that contains
hypertext should return an object that implements this interface when the
getAccessibleText method is called on an AccessibleContext.
-
AccessibleValue - the object supports
a numerical value. This interface provides the standard mechanism for an
assistive technology to determine and set the current value of the object,
as well as the minimum and maximum values. Any object that supports a numerical
value should return an object that implements this interface when the getAccessibleValue
method is called on an AccessibleContext.
This class encapsulates the Accessible object's role in the user interface
and is obtained by calling the getAccessibleRole method on an
AccessibleContext. Accessible roles include
"Check box", "Menu Item", "Panel", etc. These roles are identified
by the constants in this class such as AccessibleRole.CHECK_BOX, AccessibleRole.MENU_ITEM,
and AccessibleRole.PANEL. The constants in this class present
a strongly typed enumeration of common object roles. A public constructor
for this class has been purposely omitted and applications should use one
of the constants from this class. Although this class pre-defines
a large list of standard roles, it is extensible so additional programmer-defined
roles can be added in the future without needing to modify the base class.
In addition, the AccessibleRole
constants provide a method called toDisplayString that allows
you to obtain the localized string for a role from the AccessibleResourceBundle
class. As a result, programmers can use the constants defined in
AccessibleRole to develop internationalized applications.
This class encapsulates a particular state of the Accessible object. Accessible
states include things like "Armed", "Busy", "Checked", "Focused", etc.
These roles are identified by the constants in this class such as AccessibleState.ARMED,
AccessibleState.BUSY, AccessibleState.CHECKED, and AccessibleState.FOCUSED.
The sum of all the states of an Accessible object is called the AccessibleStateSet,
and can be obtained by calling the getAccessibleStateSet method
on an AccessibleContext.
The constants in this class present a strongly typed enumeration of
common object roles. A public constructor for this class has been purposely
omitted and applications should use one of the constants from this class.
Although this class pre-defines a large list of standard roles, it is extensible
so additional, programmer-defined roles can be added in the future without
needing to modify the base class.
Like AccessibleRole, the AccessibleState
constants provide a method called toDisplayString that allows
you to obtain the localized string for a role from the AccessibleResourceBundle
class. As a result, programmers can use the constants defined in
AccessibleState to develop internationalized applications..
This class encapsulates a collection of states of the Accessible object
and is obtained by calling the getAccessibleStateSet method on
an AccessibleContext. Since an object
might have multiple states (e.g. it might be both "Checked" and "Focused"),
this class is needed to encapsulate a collection of these states. Methods
in the class provide for retrieving the individual AccessibleStates
on the state set.
This class is used to maintain a strongly typed enumeration. It is
the super class of both the AccessibleRole
and AccessibleState classes.
Programmers normally do not interact with this class directly, but will
instead use the AccessibleRole and AccessibleState
classes.
This class contains the localized strings for the AccessibleRole
and AccessibleState classes. Like
AccessibleBundle, programmers normally
do not interact with this class directly, but will instead use the AccessibleRole
and AccessibleState classes.
The AccessibleAction
interface should be supported by any object that can perform one or more
actions. This interface provides the standard mechanism for an assistive
technology to determine what those actions are as well as tell the object
to perform those actions. Any object that can be manipulated should support
this interface.
Applications can determine if an object supports the AccessibleAction
interface by first obtaining its AccessibleContext
(see Accessible) and then calling the getAccessibleAction
method of AccessibleContext. If the return
value is not null, the object supports this interface.
The AccessibleComponent
interface should be supported by any object that is rendered on the screen.
This interface provides the standard mechanism for an assistive technology
to determine and set the graphical representation of an object.
Applications can determine if an object supports the AccessibleComponent
interface by first obtaining its AccessibleContext
(see Accessible) and then calling the getAccessibleComponent
method of AccessibleContext. If the return
value is not null, the object supports this interface.
This AccessibleSelection
interface provides the standard mechanism for an assistive technology to
determine what the current selected children are, as well as modify the
selection set. Any object that has children that can be selected should
support this the AccessibleSelection interface.
Applications can determine if an object supports the AccessibleSelection
interface by first obtaining its AccessibleContext
(see Accessible) and then calling the getAccessibleSelection
method of AccessibleContext. If the return
value is not null, the object supports this interface.
The AccessibleText
interface should be supported by any object that presents rich, editable
text. Not all text displayed on the screen is rich and editable (e.g. text
contained in buttons, labels, menus, etc., which users aren't expected
to manipulate). However, objects containing editable text must implement
interface AccessibleText if they are to interoperate with assistive technologies.
This interface provides support for going between pixel coordinates
and the text at a given pixel coordinate, for retrieving the letter, word,
and sentence at, before, or after a given position in the text. This interface
provides support for retrieving the attributes of the character at a given
position in the text (font, font size, style, etc.), as well as getting
the selected text (if any), the length of the text, and the location of
the text caret.
Applications can determine if an object supports the AccessibleText
interface by first obtaining its AccessibleContext
(see Accessible) and then calling the getAccessibleText
method of AccessibleContext. If the return
value is not null, the object supports this interface.
The AccessibleHypertext
interface should be supported by any object that presents hypertext information
on the display. This interface provides the standard mechanism for an assistive
technology to access that text via its content, attributes, and spatial
location. It also provides standard mechanisms for manipulating hyperlinks.
Applications can determine if an object supports the AccessibleHypertext
interface by first obtaining its AccessibleContext
(see Accessible) and then calling the AccessibleContext.getAccessibleText()
method of AccessibleContext. If the return
value is a class which extends AccessibleHypertext, then that object supports
AccessibleHypertext.
An object that is a hyperlink should support the AccessibleHyperlink
interface. An object that implements this interface will be returned
by calling the getLink method on an AccessibleHypertext
object.
The AccessibleValue
interface should be supported by any object that supports a numerical value
(e.g., a scroll bar). This interface provides the standard mechanism for
an assistive technology to determine and set the numerical value as well
as get the minimum and maximum values.
Applications can determine if an object supports the AccessibleValue
interface by first obtaining its AccessibleContext
(see Accessible) and then calling the getAccessibleValue
method of AccessibleContext. If the return
value is not null, the object supports this interface.
Copyright©
1995-98 Sun Microsystems, Inc. All Rights
Reserved.
To submit comments or suggestions about Java
Accessibility, please send mail to access@sun.com.