Java Platform, Standard Edition

Javaアクセシビリティ・ガイド

リリース9

E91920-01(原本部品番号:E71688-03)

2017年10月

Java Access Bridge、Java Accessibility API (JAAPI)およびJava AccessibilityユーティリティでAccessibleアプリケーションを作成する方法。Java Access Bridgeは、特定のJavaアプリケーションをMicrosoft Windows上のユーザー補助テクノロジに対して可視にできるテクノロジです。JAAPIにより、体の不自由な方が利用可能なJavaアプリケーションを作成できます。Java Accessibilityユーティリティは、JAAPIを実装するGUIツールキットへのアクセスをユーザー補助テクノロジが提供できるように支援するユーティリティ・クラスのセットです。

Java Platform, Standard Edition Javaアクセシビリティ・ガイド、リリース9

E91920-01

Copyright © 1993, 2017, Oracle and/or its affiliates.  All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、このソフトウェアまたはハードウェアを安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、オラクル社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle およびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXはThe Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連リソース

- 表記規則

1 Java Accessibilityの概要

2 Java Access Bridgeの概要

- Java Access Bridgeの有効化とテスト

- Java Access BridgeをサポートするJava SEプラットフォーム

- コマンド行を使用したJava Access Bridgeの有効化

- 「コントロール パネル」を使用したJava Access Bridgeの有効化

- Java Access Bridgeの無効化

- Java Access Bridgeのテスト

- Java Access Bridgeのツール

- 64ビット・オペレーティング・システムでのユーザー補助テクノロジの最小バージョン要件

- Java Access Bridgeアーキテクチャ

- Java Access Bridge API

- Java Access Bridge APIファイル

- Java Access Bridge APIコール

- Java Access Bridge APIデータ構造

- Java Access Bridge APIコールバック

- Java Access Bridgeのトラブルシューティング

3 Accessibilityのプロパティ

4 Java Accessibilityユーティリティの概要

はじめに

このドキュメントには、Accessibleアプリケーションを作成できるようにするためのJava Access Bridge、Java Accessibility API (JAAPI)およびJava Accessibilityユーティリティが説明されています。

対象読者

このドキュメントは、体の不自由な方が利用可能なJavaアプリケーションを作成する開発者を対象としています。Accessible Javaアプリケーションは、画面リーダー、画面拡大機能、音声認識システム、および点字ディスプレイなどのユーザー補助テクノロジに対応しています。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info) か、聴覚に障害のあるお客様は (http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。

関連リソース

- javax.accessibilityパッケージ

- Javaチュートリアル(Java SE 8以前)のユーザー補助テクノロジのサポート方法

- com.sun.java.accessibility.utilパッケージ

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

1 Java Accessibilityの概要

Java SEには、Accessibleアプリケーションを作成できるようにするためのJava Access Bridge、Java Accessibility API (JAAPI)およびJava Accessibilityユーティリティが提供されています。

内容は次のとおりです

- Java Access Bridge

- Java Accessibility API

- Java Accessibilityユーティリティ

- プラガブルなLook & Feel

Java Access Bridge

Java Access Bridgeは、特定のJavaアプリケーションおよびアプレットをMicrosoft Windows上のユーザー補助テクノロジに対して可視にできるテクノロジです。Java Access Bridgeの有効化とテストを参照してください。

Java Accessibility API

Java Accessibility API (JAAPI)は、javax.accessibilityパッケージに含まれており、Java Foundation Classes (JFC)のコア・パーツの1つです。JFCは、グラフィカル・ユーザー・インタフェース・コンポーネントの包括セットで、インターネット、イントラネット、およびデスクトップ・アプリケーションの配備を容易にするために設計された基幹サービスです。JAAPIにより、体の不自由な方が利用可能なJavaアプリケーションを作成できます。Accessible Javaアプリケーションは、画面リーダー、画面拡大機能、音声認識システム、および点字ディスプレイなどのユーザー補助テクノロジに対応しています。JAAPIはGUIコンポーネント情報をユーザー補助テクノロジから利用できるようにすることで、ユーザーにJavaアプリケーションの代替表現および制御を提供します。

JAAPIのサポートは、Swingコンポーネントに組み込まれています。Javaチュートリアル(Java SE 8以前)のユーザー補助テクノロジのサポート方法を参照してください。

Java Accessibilityユーティリティ

Java Accessibilityユーティリティは、パッケージcom.sun.java.accessibility.utilに含まれ、Java Accessibility APIを実装するGUIツールキットへのアクセスをユーザー補助テクノロジが提供できるように支援するユーティリティ・クラスのセットです。Java Accessibilityユーティリティは、UIコンポーネントに関連するイベントをモニターします。また、ユーザー補助テクノロジがGUIに関する追加情報(マウスの現在位置、現在フォーカスを持つウィンドウなど)を取得するのを支援します。Java Accessibilityユーティリティの概要を参照してください。

プラガブルなLook & Feel

Java Foundation ClassesはプラガブルなLook & Feelアーキテクチャを実装します。このアーキテクチャは、ユーザー・インタフェースの非視覚表現によってアプリケーションの視覚表現を置き換えたり拡張したりできます。ユーザー・インタフェースの表現は、各コンポーネントの基盤となる構造およびデータから分離されています。これは、コンポーネントのユーザー・インタフェースをそのモデルから分離することで実現されています。コンポーネントのモデルとは、ユーザー・インタフェースによってユーザーに提示される状態と情報をカプセル化する構造のことです。このアーキテクチャの詳細は、Javaチュートリアル(Java SE 8以前)のJFCとSwingについてを参照してください。

2 Java Access Bridgeの概要

Java Access Bridgeは、Java Accessibility APIを実装するJavaアプリケーションおよびアプレットをMicrosoft Windowsシステム上のユーザー補助テクノロジから可視にするためのテクノロジです。

Java Access Bridgeは、Microsoft Windowsのダイナミックリンク・ライブラリ(DLL)でJava Accessibility APIを公開するテクノロジで、Java Accessibility APIを実装するJavaアプリケーションおよびアプレットをMicrosoft Windowsシステム上のユーザー補助テクノロジから可視にできます。

Microsoft Windowsシステムで使用できる既存のユーザー補助テクノロジがJavaアプリケーションへのアクセスを提供するには、Java Accessibility APIとやり取りするためのなんらかの方法が必要です。Java Access Bridgeがこのやり取りをサポートします。

Microsoft Windows上で実行されているユーザー補助テクノロジ・アプリケーション(画面リーダーなど)はJava Access Bridge DLLとやり取りし、Java Access Bridge DLLはJava Access Bridge Javaライブラリ経由でJava Virtual Machineとやり取りします。これらのJavaライブラリはJava Accessibility APIとやり取りします。Java Accessibility APIはJavaアプリケーションで発生していることについての情報を収集し、Java Access Bridge経由で画面リーダーに転送します。

内容は次のとおりです

- Java Access Bridgeの有効化とテスト

- Java Access Bridgeアーキテクチャ

- Java Access Bridge API

Java Access Bridgeの有効化とテスト

デフォルトで、Java Access Bridgeは有効にされていません。コマンド行またはWindowsの「コントロール パネル」のいずれかを使用して有効にします。Accessibility APIを使用するJavaアプリケーションを実行してテストします。

内容は次のとおりです

- Java Access BridgeをサポートするJava SEプラットフォーム

- コマンド行を使用したJava Access Bridgeの有効化

- 「コントロール パネル」を使用したJava Access Bridgeの有効化

- Java Access Bridgeの無効化

- Java Access Bridgeのテスト

- Java Access Bridgeのツール

- 64ビット・オペレーティング・システムでのユーザー補助テクノロジの最小バージョン要件

Java Access BridgeをサポートするJava SEプラットフォーム

Java Access BridgeはJRE 7u6以降に含まれています。

コマンド行を使用したJava Access Bridgeの有効化

jabswitchコマンドでJava Access Bridgeを有効にします。

次のコマンドを実行します(%JRE_HOME%はJREのディレクトリです)。

%JRE_HOME%\bin\jabswitch -enable

「コントロール パネル」を使用したJava Access Bridgeの有効化

「コントロール パネル」を使用して「コンピューターの簡単操作センター」でJava Access Bridgeを有効にします。

1. 「スタート」をクリックし、「コントロール パネル」、「コンピューターの簡単操作」、「コンピューターの簡単操作センター」を選択します。または、Windowsロゴ・キー+Uを押して「コンピューターの簡単操作センター」にアクセスします。

2. 「コンピュータを画面なしで使用します」を選択します。

3. 「他のインストールされたプログラム」セクションで、「Java Access Bridgeを有効にする」チェック・ボックスを選択します(下にスクロールする必要がある場合があります)。

Java Access Bridgeの無効化

jabswitchコマンドでJava Access Bridgeを無効にします。

次のコマンドを実行します。

%JRE_HOME%\bin\jabswitch -disable

注意:
Java Access BridgeをWindowsの「コンピューターの簡単操作センター」で無効にすることはできません。

Java Access Bridgeのテスト

サポートされているユーザー補助テクノロジを最初にインストールした後、Accessibility APIを使用するJavaアプリケーションを実行してJava Access Bridgeをテストします。

1. Java Access Bridgeが有効であることを確認します。

2. Java Access Bridgeをサポートする次のようなユーザー補助テクノロジ製品をインストールします。

- JAWS

- NonVisual Desktop Access (NVDA)

- Window-Eyes

- ZoomText

- SuperNova

3. javax.accessibilityパッケージを使用するJavaアプリケーションを実行し、ユーザー補助テクノロジ製品が正しく機能することを確認します。

Java Access Bridgeのツール

JREおよびJDKの一部であるjaccessinspectorおよびjaccesswalkerツールを使用して、Java Access Bridgeをテストします。

jaccessinspectorツールは、Java Accessibility Utilities APIを使用して、Java仮想マシン内のオブジェクトに関してアクセス可能な情報を調べます。jaccesswalkerツールは、特定のJava仮想マシンのコンポーネント・ツリーをすべて調べ、ツリー・ビューでアクセシビリティ階層を表示します。これらのツールをJREまたはJDKのbinディレクトリで探します。

64ビット・オペレーティング・システムでのユーザー補助テクノロジの最小バージョン要件

このトピックでは、64ビット・オペレーティング・システムでのユーザー補助テクノロジの最小バージョン要件を示します。

- JAWS: Version 13以降

- NVDA: Version 2011.3以降

- SuperNova: Version 13以降

- Window-Eyes: Version 8.2以降

- ZoomText: Version 10.1.5以降

注意:
64ビット・アプリケーションには64ビットのブラウザが必要です。特にInternet Explorerを使用する場合は64ビット・バージョンであることを確認します。

Java Access Bridgeアーキテクチャ

Java Access Bridgeは、ユーザー補助テクノロジとJavaアプリケーションの間のやり取りを可能にするクラスおよびDLLのパッケージで構成されています。

次の図は、Java Access BridgeとJava Accessibilityユーティリティのコンポーネントが互いに対話する様子を示しています。

図2-1 Java Access Bridgeアーキテクチャ図

Java Access Bridgeは、Java Accessibility APIのサブセットをWindows\System32\windowsaccessbridge-64.dll Windows DLL経由で提供します。Microsoft Windowsのユーザー補助テクノロジはこのDLLをロードしてリンクします。Java Access Bridgeは、Javaランタイムがロードするjavaaccessbridge.dllも提供します。このDLLは、Java Accessibility API経由でアプリケーションとやり取りし、さらにそれ経由でユーザー・インタフェース・ツールキットおよびコンポーネントとやり取りします。DLLは、Java Accessibilityユーティリティ(イベントを合体し、ユーザー補助テクノロジ(およびユーザー補助テクノロジとして動作するJava Access Bridge)にアプリケーション・ライフサイクル機能を提供するクラスのコレクション)経由でもアプリケーションとやり取りします。Java Accessibilityユーティリティの概要を参照してください。Java Access BridgeのJavaコンポーネントは、JavaランタイムにロードされたDLLとJavaランタイム内のその他のJavaコードとの間のやり取りを管理します。Java Access BridgeのJavaコンポーネントは、assistive_technologiesプロパティの指定内容を使用してJava SEランタイムにロードされ(Accessibilityのプロパティを参照)、次にJava Native Interfaces (JNI)を使用してJava側DLLをロードします。Java Access BridgeがJava Accessibilityユーティリティ経由で実現する、ユーザー補助テクノロジとJavaアプリケーションとの間のやり取りは、プロセス間通信と呼ばれます。

Java Access Bridge API

Java Access Bridge APIを使用すると、Javaアプリケーションで機能する、Microsoft Windowsオペレーティング・システム向けユーザー補助テクノロジ・アプリケーションを開発できます。これには、JavaアプリケーションのGUI要素についての情報(Java Access Bridge経由でユーザー補助テクノロジ・アプリケーションに転送される)を表示および操作できるネイティブ・メソッドが含まれています。

内容は次のとおりです

- Java Access Bridge APIファイル

- Java Access Bridge APIコール

- Java Access Bridge APIデータ構造

- Java Access Bridge APIコールバック

- Java Access Bridgeのトラブルシューティング

Java Access Bridge APIファイル

Java Access Bridge APIは、AccessBridgeCalls.hおよびAccessBridgeCalls.c (APIコール)、AccessBridgePackages.h (データ構造)およびAccessBridgeCallbacks.h (コールバック)の4つのファイルにあります。

Java Access Bridge APIファイルの場所

次のJava Access Bridge API include (ヘッダー)ファイルを%JAVA_HOME%\include\win32\bridgeで探します。

- AccessBridgeCallbacks.h

- AccessBridgeCalls.h

- AccessBridgePackages.h

ファイルAccessBridgeCalls.cはいくつかの主要なインタフェースを定義するもので、これをhttp://hg.openjdk.java.net/jdk9/jdk9/jdk/file/tip/src/jdk.accessibility/windows/native/bridge/AccessBridgeCalls.cのJDKのソース・コード・リポジトリから探します。

Java Access Bridge APIコール

ファイルAccessBridgeCalls.hには、Java Access Bridge APIコールが含まれています。これらを使用するには、ファイルAccessBridgeCalls.cをコンパイルします。Java Access Bridge APIコールは、ユーザーのアプリケーションとWindowsAccessBridge.dllの間のインタフェースとして機能します。

初期化/シャットダウン関数

これらの2つの関数はJava Access Bridgeを起動してシャットダウンします。

- BOOL initializeAccessBridge();

Java Access Bridgeを起動します。この関数を呼び出すまではJava Access Bridge APIのいずれの部分も使用できません。

- BOOL shutdownAccessBridge();

Java Access Bridgeをシャットダウンします。アプリケーションがJava Access Bridgeの使用を終了するときは、(アプリケーションが存在する前に)この関数を呼び出してJava Access Bridgeが正しくメモリー・クリーン・アップを実行できるようにすることが重要です。

注: 関数shutdownAccessBridgeを呼び出すことは、JVMによって保持されているデータ構造を解放することの代わりにはならないため、関数ReleaseJavaObjectを呼び出すことでこれを行なってください。

ゲートウェイ関数

通常はこれらの関数を呼び出してから、その他のJava Access Bridge API関数を呼び出します。

- BOOL IsJavaWindow(HWND window);

指定されたウィンドウがJava Accessibility APIを実装しているかどうかを確認します。

- BOOL GetAccessibleContextFromHWND(HWND target, long *vmID, AccessibleContext *ac);

指定されたウィンドウのAccessibleContextおよびvmID値を取得します。多くのJava Access Bridge関数にはAccessibleContextおよびvmID値が必要です。

イベント処理関数

これらは、イベント・タイプを処理する関数への関数ポインタを取ります。これらのタイプのイベントを受け取る必要がなくなった場合、関数を再度呼び出してNULL値を渡します。ファイルAccessBridgeCallbacks.h内で、これらの関数に渡す必要がある関数ポインタのプロトタイプを探します。Java Access Bridge APIコールバックでは、これらのプロトタイプを説明します。

全般関数

- void ReleaseJavaObject(long vmID, Java_Object object);

Javaオブジェクトobjectによって使用されるメモリーを解放します(objectはJava Access Bridgeによって返されるオブジェクト)。Java Access BridgeはJVM内で返されるすべてのJavaオブジェクトへの参照を自動的に保持するため、それらはガベージ・コレクトされません。メモリー・リークを防ぐには、Java Access Bridgeによって返されたすべてのJavaオブジェクトの使用が終了した後、それらに対してReleaseJavaObjectを呼び出します。

- BOOL GetVersionInfo(long vmID, AccessBridgeVersionInfo *info);

アプリケーションが使用しているJava Access Bridgeインスタンスのインスタンス・バージョン情報を取得します。この情報を使用して、Java Access Bridgeのバージョンの利用できる機能を判別できます。

注意:
JVMのバージョンを判別するには、有効なvmIDを渡す必要があります。そうでない場合は返されるものはすべて、アプリケーションが接続されているWindowsAccessBridge.DLLファイルのバージョンです。

Accessibleコンテキスト関数

これらの関数は、Java Access Bridgeにより公開されるJava Accessibility APIのコア部分を提供します。

関数GetAccessibleContextAtおよびGetAccessibleContextWithFocusは、AccessibleContextオブジェクト(Accessibleオブジェクトへのマジック・クッキー(Java Object参照)とJVMクッキー)を取得します。これらの2つのクッキーを使用して、Java Access Bridge経由でオブジェクトを参照します。ほとんどのJava Access Bridge API関数には、これら2つのパラメータを渡す必要があります。

注意:
AccessibleContextオブジェクトは、64ビット・プロセス間通信(windowsaccessbridge-64.dllファイルを使用)の下での64ビット参照です。ただし、JDK 9より前では、AccessibleContextオブジェクトは、32ビット・プロセス間通信(ファイル名に-32または-64がないwindowsaccessbridge.dllファイルを使用)の下での32ビット参照です。したがって、使用しているユーザー補助テクノロジ・アプリケーションを64ビットのWindowsシステム上で実行するように変換する場合は、ユーザー補助テクノロジ・アプリケーションを再コンパイルする必要があります。

関数GetAccessibleContextInfoは、JVMに属するAccessibleContextオブジェクトの詳細情報を返します。パフォーマンスを向上させるために、Java Accessibility APIのさまざまな異なるメソッドが集められてJava Access Bridge APIのいくつかのルーチンにまとめられ、struct値で返されます。ファイルAccessBridgePackages.hが、これらのstruct値を定義しており、Java Access Bridge APIコールバックで説明されています。

関数GetAccessibleChildFromContextおよびGetAccessibleParentFromContextを使用すると、GUIコンポーネント階層を調べて、特定のGUIオブジェクトのn番目の子(または親)を取得できます。

- BOOL GetAccessibleContextAt(long vmID, AccessibleContext acParent, jint x, jint y, AccessibleContext *ac)

マウス・ポインタの下にあるウィンドウまたはオブジェクトのAccessibleContextオブジェクトを取得します。

- BOOL GetAccessibleContextWithFocus(HWND window, long *vmID, AccessibleContext *ac);

フォーカスを持つウィンドウまたはオブジェクトのAccessibleContextオブジェクトを取得します。

- BOOL GetAccessibleContextInfo(long vmID, AccessibleContext ac, AccessibleContextInfo *info);

AccessibleContextオブジェクトacのAccessibleContextInfoオブジェクトを取得します。

- AccessibleContext GetAccessibleChildFromContext(long vmID, AccessibleContext ac, jint index);

オブジェクトacのn番目の子を表すAccessibleContextオブジェクトを返します(nは値indexで指定される)。

- AccessibleContext GetAccessibleParentFromContext(long vmID, AccessibleContext ac);

オブジェクトacの親を表すAccessibleContextオブジェクトを返します。

- HWND getHWNDFromAccessibleContext(long vmID, AccessibleContext ac);

HWNDをトップ・レベルのウィンドウのAccessibleContextから返します。

Accessibleテキスト関数

これらの関数は、Java Accessibility APIによって提供されるAccessibleText情報を取得します(効率化のために7つのチャンクに分割されます)。AccessibleContextInfoデータ構造内のフラグaccessibleTextをTRUEに設定した場合、AccessibleContext内にAccessibleText情報が含まれます。ファイルAccessBridgePackages.hが、これらの関数で使用されるstruct値を定義しており、Java Access Bridge APIコールバックで説明されています。

- BOOL GetAccessibleTextInfo(long vmID, AccessibleText at, AccessibleTextInfo
*textInfo, jint x, jint y);

- BOOL GetAccessibleTextItems(long vmID, AccessibleText at, AccessibleTextItemsInfo
*textItems, jint index);

- BOOL GetAccessibleTextSelectionInfo(long vmID, AccessibleText
at, AccessibleTextSelectionInfo *textSelection);

- char *GetAccessibleTextAttributes(long vmID, AccessibleText
at, jint index, AccessibleTextAttributesInfo *attributes);

- BOOL GetAccessibleTextRect(long vmID, AccessibleText at, AccessibleTextRectInfo
*rectInfo, jint index);

- BOOL GetAccessibleTextRange(long vmID, AccessibleText at, jint
start, jint end, wchar_t *text, short len);

- BOOL GetAccessibleTextLineBounds(long vmID, AccessibleText
at, jint index, jint *startIndex, jint *endIndex);

その他のテキスト関数

- BOOL selectTextRange(const long vmID, const AccessibleContext accessibleContext, const int startIndex, const int endIndex);

2つのインデックス間のテキストを選択します。選択には、先頭のインデックスのテキストと末尾のインデックスのテキストを含みます。正常終了かどうかを返します。

- BOOL getTextAttributesInRange(const long vmID, const AccessibleContext accessibleContext, const int startIndex, const int endIndex, AccessibleTextAttributesInfo *attributes, short *len);

2つのインデックス間のテキスト属性を取得します。属性リストには、先頭のインデックスのテキストと末尾のインデックスのテキストを含みます。正常終了かどうかを返します。

- BOOL setCaretPosition(const long vmID, const AccessibleContext accessibleContext, const int position);

キャレットをテキストの位置に設定します。正常終了かどうかを返します。

- BOOL getCaretLocation(long vmID, AccessibleContext ac, AccessibleTextRectInfo *rectInfo, jint index);

テキスト・キャレットの位置を取得します。

- BOOL setTextContents (const long vmID, const AccessibleContext accessibleContext, const wchar_t *text);

編集可能なテキストの内容を設定します。AccessibleContextは、AccessibleEditableTextを実装し、編集できる必要があります。設定できる最大テキスト長はMAX_STRING_SIZE - 1です。正常終了かどうかを返します。

Accessible表関数

- BOOL getAccessibleTableInfo(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);

表に関する情報、たとえば、キャプション、要約、行数および列数、およびAccessibleTableを返します。

- BOOL getAccessibleTableCellInfo(long vmID, AccessibleTable accessibleTable, jint row, jint column, AccessibleTableCellInfo *tableCellInfo);

指定された表セルに関する情報を返します。行および列指定子はゼロベースです。

- BOOL getAccessibleTableRowHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);

指定された表の表の行ヘッダーを表として返します。

- BOOL getAccessibleTableColumnHeader(long vmID, AccessibleContext acParent, AccessibleTableInfo *tableInfo);

指定された表の表の列ヘッダーを表として返します。

- AccessibleContext getAccessibleTableRowDescription(long vmID, AccessibleContext acParent, jint row);

指定された表の指定された行の説明を返します。行指定子はゼロベースです。

- AccessibleContext getAccessibleTableColumnDescription(long vmID, AccessibleContext acParent, jint column);

指定された表の指定された列の説明を返します。列指定子はゼロベースです。

- jint getAccessibleTableRowSelectionCount(long vmID, AccessibleTable table);

表の選択された行数を返します。

- BOOL isAccessibleTableRowSelected(long vmID, AccessibleTable table, jint row);

指定されたゼロ・ベースの行が選択されている場合にtrueを返します。

- BOOL getAccessibleTableRowSelections(long vmID, AccessibleTable table, jint count, jint *selections);

選択された行のゼロ・ベースのインデックスの配列を返します。

- jint getAccessibleTableColumnSelectionCount(long vmID, AccessibleTable table);

表の選択された列数を返します。

- BOOL isAccessibleTableColumnSelected(long vmID, AccessibleTable table, jint column);

指定されたゼロ・ベースの列が選択されている場合にtrueを返します。

- BOOL getAccessibleTableColumnSelections(long vmID, AccessibleTable table, jint count, jint *selections);

選択された列のゼロ・ベースのインデックスの配列を返します。

- jint getAccessibleTableRow(long vmID, AccessibleTable table, jint index);

指定したセル・インデックスでのセルの行番号を返します。値はゼロ・ベースです。

- jint getAccessibleTableColumn(long vmID, AccessibleTable table, jint index);

指定したセル・インデックスでのセルの列番号を返します。値はゼロ・ベースです。

- jint getAccessibleTableIndex(long vmID, AccessibleTable table, jint row, jint column);

指定した行および列オフセットの表のインデックスを返します。値はゼロ・ベースです。

Accessible関連セット関数

- BOOL getAccessibleRelationSet(long vmID, AccessibleContext accessibleContext, AccessibleRelationSetInfo *relationSetInfo);

オブジェクトの関連オブジェクトに関する情報を返します。

Accessibleハイパーテキスト関数

- BOOL getAccessibleHypertext(long vmID, AccessibleContext accessibleContext, AccessibleHypertextInfo *hypertextInfo);

コンポーネントに関連付けられたハイパーテキスト情報を返します。

- BOOL activateAccessibleHyperlink(long vmID, AccessibleContext accessibleContext, AccessibleHyperlink accessibleHyperlink);

ハイパーテキストのアクティブ化をリクエストします。

- jint getAccessibleHyperlinkCount(const long vmID, const AccessibleHypertext hypertext);

コンポーネントのハイパーリンク数を返します。AccessibleHypertext.getLinkCountにマップします。エラー時に-1を返します。

- BOOL getAccessibleHypertextExt(const long vmID, const AccessibleContext accessibleContext, const jint nStartIndex, AccessibleHypertextInfo *hypertextInfo);

コンポーネントのハイパーリンクを繰り返します。ハイパーリンク・インデックスnStartIndexから始まるコンポーネントのハイパーテキスト情報を返します。このメソッドへの各コールに対してMAX_HYPERLINKS次のAccessibleHypertextInfoオブジェクトが返されます。エラー時にFALSEを返します。

- jint getAccessibleHypertextLinkIndex(const long vmID, const AccessibleHypertext hypertext, const jint nIndex);

ドキュメントの文字インデックスに関連付けられたハイパーリンクの配列へのインデックスを返します。AccessibleHypertext.getLinkIndexにマップします。エラー時に-1を返します。

- BOOL getAccessibleHyperlink(const long vmID, const AccessibleHypertext hypertext, const jint nIndex, AccessibleHypertextInfo *hyperlinkInfo);

ドキュメントのn番目のハイパーリンクを返します。AccessibleHypertext.getLinkにマップします。エラー時にFALSEを返します。

Accessibleキー・バインディング関数

- BOOL getAccessibleKeyBindings(long vmID, AccessibleContext accessibleContext, AccessibleKeyBindings *keyBindings);

コンポーネントに関連付けられたキー・バインデイングのリストを返します。

Accessibleアイコン関数

- BOOL getAccessibleIcons(long vmID, AccessibleContext accessibleContext, AccessibleIcons *icons);

コンポーネントに関連付けられたアイコンのリストを返します。

Accessibleアクション関数

- BOOL getAccessibleActions(long vmID, AccessibleContext accessibleContext, AccessibleActions *actions);

コンポーネントが実行できるアクションのリストを返します。

- BOOL doAccessibleActions(long vmID, AccessibleContext accessibleContext, AccessibleActionsToDo *actionsToDo, jint *failure);

AccessibleActionsのリストがコンポーネントによって実行されるようリクエストします。すべてのアクションが実行された場合にTRUEを返します。最初にリクエストしたアクションが失敗した場合にFALSEを返します。この場合、"failure"に失敗したアクションのインデックスが含まれます。

ユーティリティ関数

- BOOL IsSameObject(long vmID, JOBJECT64 obj1, JOBJECT64 obj2);

2つのオブジェクト参照が同じオブジェクトを参照するかどうかを返します。

- AccessibleContext getParentWithRole (const long vmID, const AccessibleContext accessibleContext, const wchar_t *role);

指定されたオブジェクトの祖先である指定のロールを持つAccessibleContextを返します。このロールはJava Access Bridge APIデータ構造で定義されたロール文字列の1つです。指定のロールを持つ祖先オブジェクトがない場合は、(AccessibleContext)0を返します。

- AccessibleContext getParentWithRoleElseRoot (const long vmID, const AccessibleContext accessibleContext, const wchar_t *role);

指定されたオブジェクトの祖先である指定のロールを持つAccessibleContextを返します。このロールはJava Access Bridge APIデータ構造で定義されたロール文字列の1つです。指定のロールを持つオブジェクトが存在しない場合、Javaウィンドウのトップ・レベルのオブジェクトを返します。エラー時に(AccessibleContext)0を返します。

- AccessibleContext getTopLevelObject (const long vmID, const AccessibleContext accessibleContext);

Javaウィンドウのトップ・レベルのオブジェクトに対するAccessibleContextを返します。これは、そのウィンドウに対するGetAccessibleContextFromHWNDから取得される同じAccessibleContextです。エラー時に(AccessibleContext)0を返します。

- int getObjectDepth (const long vmID, const AccessibleContext accessibleContext);

指定されたオブジェクトの、オブジェクト階層での深さを返します。オブジェクト階層の最上位のオブジェクトのオブジェクト深さは0です。エラー時に-1を返します。

- AccessibleContext getActiveDescendent (const long vmID, const AccessibleContext accessibleContext);

オブジェクトの現在のActiveDescendentのAccessibleContextを返します。このメソッドは、ActiveDescendentがコンテナ・オブジェクトで現在選択されているコンポーネントであると仮定しています。エラー時または選択がない場合に(AccessibleContext)0を返します。

- BOOL requestFocus(const long vmID, const AccessibleContext accessibleContext);

コンポーネントのフォーカスをリクエストします。正常終了かどうかを返します。

- int getVisibleChildrenCount(const long vmID, const AccessibleContext accessibleContext);

コンポーネントの可視の子ノードの数を返します。エラー時に-1を返します。

- BOOL getVisibleChildren(const long vmID, const AccessibleContext accessibleContext, const int startIndex, VisibleChildrenInfo *visibleChildrenInfo);

AccessibleContextの可視の子を取得します。正常終了かどうかを返します。

- int getEventsWaiting();

起動を待機しているイベントの数を取得します。

Accessible値関数

これらの関数は、Java Accessibility APIによって提供されるAccessibleValue情報を取得します。AccessibleContextInfoデータ構造内のaccessibleValueフラグがTRUEに設定されている場合、AccessibleContextオブジェクト内にAccessibleValue情報が含まれます。返される値は文字列(char *value)です(値が、Java言語構造体java.lang.Numberをサブクラス化する整数、浮動小数点値、または他のオブジェクトであるかどうかを事前に判別できないため)。

- BOOL GetCurrentAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_t *value, short len);

- BOOL GetMaximumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_ *value, short len);

- BOOL GetMinimumAccessibleValueFromContext(long vmID, AccessibleValue av, wchar_ *value, short len);

Accessible選択関数

これらの関数は、Java Accessibility APIによって提供されるAccessibleSelection情報を取得および操作します。AccessibleContextInfoデータ構造内のaccessibleSelectionフラグがTRUEに設定されている場合、AccessibleContext内にAccessibleSelection情報が含まれます。AccessibleSelectionサポートは、照会時とは異なり、選択に対して項目を追加および削除することでユーザー・インタフェースを操作できる最初の場所です。一部の関数は子座標にあるインデックスを使用し、その他は選択座標を使用します。たとえば、子インデックスを渡すことにより、選択に対する追加または削除を行います(たとえば、4番目の子を選択に追加するなど)。一方、選択された子の列挙は選択座標内で行われます(たとえば、選択された最初のオブジェクトのAccessibleContextを取得するなど)。

- void AddAccessibleSelectionFromContext(long vmID, AccessibleSelection
as, int i);

- void ClearAccessibleSelectionFromContext(long vmID, AccessibleSelection
as);

- jobject GetAccessibleSelectionFromContext(long vmID, AccessibleSelection
as, int i);

- int GetAccessibleSelectionCountFromContext(long vmID, AccessibleSelection
as);

- BOOL IsAccessibleChildSelectedFromContext(long vmID, AccessibleSelection
as, int i);

- void RemoveAccessibleSelectionFromContext(long vmID, AccessibleSelection
as, int i);

- void SelectAllAccessibleSelectionFromContext(long vmID, AccessibleSelection
as);

Java Access Bridge APIデータ構造

Java Access Bridge APIデータ構造はファイルAccessBridgePackages.hに含まれています。

重要なデータ構造

このファイルには必要がない(および無視できる)データ構造があります。これらは2つのJava Access Bridge DLLのプロセス間通信メカニズムの一部として使用されます。重要なデータ構造は次のとおりです。

#define MAX_STRING_SIZE     1024
#define SHORT_STRING_SIZE    256

typedef struct AccessibleContextInfoTag {
wchar_ name[MAX_STRING_SIZE];        // the AccessibleName of the object
wchar_ description[MAX_STRING_SIZE]; // the AccessibleDescription of the object
wchar_ role[SHORT_STRING_SIZE];      // localized AccesibleRole string
wchar_ states[SHORT_STRING_SIZE];    // localized AccesibleStateSet string
//   (comma separated)
jint indexInParent                   // index of object in parent
jint childrenCount                   // # of children, if any
jint x;                              // screen x-axis co-ordinate in pixels
jint y;                              // screen y-axis co-ordinate in pixels
jint width;                          // pixel width of object
jint height;                         // pixel height of object
BOOL accessibleComponent;            // flags for various additional
BOOL accessibleAction;               // Java Accessibility interfaces
BOOL accessibleSelection;            // FALSE if this object doesn't
BOOL accessibleText;                 // implement the additional interface
BOOL accessibleInterfaces;           // new bitfield containing additional
//   interface flags
} AccessibleContextInfo;

typedef struct AccessibleTextInfoTag {
jint charCount;       // # of characters in this text object
jint caretIndex;      // index of caret
jint indexAtPoint;    // index at the passsed in point
} AccessibleTextInfo;

typedef struct AccessibleTextItemsInfoTag {
wchar_t letter;
wchar_t word[SHORT_STRING_SIZE];
wchar_t sentence[MAX_STRING_SIZE];
} AccessibleTextItemsInfo;

typedef struct AccessibleTextSelectionInfoTag {
jint selectionStartIndex;
jint selectionEndIndex;
wchar_t selectedText[MAX_STRING_SIZE];
} AccessibleTextSelectionInfo;

typedef struct AccessibleTextRectInfoTag  {
jint x;          // bounding recttangle of char at index, x-axis co-ordinate
jint y;          // y-axis co-ordinate
jint width;      // bounding rectangle width
jint height;     // bounding rectangle height
} AccessibleTextRectInfo;

typedef struct AccessibleTextAttributesInfoTag {
BOOL bold;
BOOL italic;
BOOL underline;
BOOL strikethrough;
BOOL superscript;
BOOL subscript;
wchar_t backgroundColor[SHORT_STRING_SIZE];
wchar_t foregroundColor[SHORT_STRING_SIZE];
wchar_t fontFamily[SHORT_STRING_SIZE];
jint fontSize;
jint alignment;
jint bidiLevel;
jfloat firstLineIndent;
jfloat leftIndent;
jfloat rightIndent;
jfloat lineSpacing;
jfloat spaceAbove;
jfloat spaceBelow;
wchar_t fullAttributesString[MAX_STRING_SIZE];
} AccessibleTextAttributesInfo;

typedef struct AccessibleTableInfoTag  {
JOBJECT64 caption;  // AccesibleContext
JOBJECT64 summary;  // AccessibleContext
jint rowCount;
jint columnCount;
JOBJECT64 accessibleContext;
JOBJECT64 accessibleTable;
} AccessibleTableInfo;

typedef struct AccessibleTableCellInfoTag  {
JOBJECT64  accessibleContext;
jint       index;
jint       row;
jint       column;
jint       rowExtent;
jint       columnExtent;
jboolean   isSelected;
} AccessibleTableCellInfo;

typedef struct AccessibleRelationSetInfoTag {
jint relationCount;
AccessibleRelationInfo relations[MAX_RELATIONS];
} AccessibleRelationSetInfo;

typedef struct AccessibleRelationInfoTag {
wchar_t key[SHORT_STRING_SIZE];
jint targetCount;
JOBJECT64 targets[MAX_RELATION_TARGETS];  // AccessibleContexts
} AccessibleRelationInfo;

typedef struct AccessibleHypertextInfoTag {
jint linkCount;                                 // number of hyperlinks
AccessibleHyperlinkInfo links[MAX_HYPERLINKS];  // the hyperlinks
JOBJECT64 accessibleHypertext;                  // AccessibleHypertext object
} AccessibleHypertextInfo;

typedef struct AccessibleHyperlinkInfoTag {
wchar_t text[SHORT_STRING_SIZE]; // the hyperlink text
jint startIndex;                 // index in the hypertext document where the link begins
jint endIndex;                   // index in the hypertext document where the link ends
JOBJECT64 accessibleHyperlink;   // AccessibleHyperlink object
} AccessibleHyperlinkInfo;

typedef struct AccessibleKeyBindingsTag {
int keyBindingsCount; // number of key bindings
AccessibleKeyBindingInfo keyBindingInfo[MAX_KEY_BINDINGS];
} AccessibleKeyBindings;

typedef struct AccessibleKeyBindingInfoTag {
jchar character; // the key character
jint modifiers;  // the key modifiers
} AccessibleKeyBindingInfo;

typedef struct  AccessibleIconsTag {
jint iconsCount;                            // number of icons
AccessibleIconInfo iconInfo[MAX_ICON_INFO]; // the icons
} AccessibleIcons;

typedef struct AccessibleIconInfoTag {
wchar_t description[SHORT_STRING_SIZE]; // icon description
jint height;                            // icon height
jint width;                             // icon width
} AccessibleIconInfo;

typedef struct AccessibleActionsTag {
jint actionsCount;                                // number of actions
AccessibleActionInfo actionInfo[MAX_ACTION_INFO]; // the action information
} AccessibleActions;

typedef struct AccessibleActionInfoTag {
wchar_t name[SHORT_STRING_SIZE]; // action name
} AccessibleActionInfo;

typedef struct AccessibleActionsToDoTag {
jint actionsCount;                               // number of actions to do
AccessibleActionInfo actions[MAX_ACTIONS_TO_DO]; // the accessible actions to do
} AccessibleActionsToDo;

typedef struct VisibleChildenInfoTag {
int returnedChildrenCount;                        // number of children returned
AccessibleContext children[MAX_VISIBLE_CHILDREN]; // the visible children
} VisibleChildenInfo;

Java Access Bridge APIコールバック

Java Access Bridge APIコールバックはファイルAccessBridgeCallbacks.hに含まれています。イベント処理関数はこれらのプロトタイプに一致する必要があります。

これらのイベント・ハンドラの使用が終了したら、イベント・ハンドラにより返されたすべてのJOBJECT64に対して関数ReleaseJavaObjectを呼び出し、JVMのメモリー・リークを防ぐ必要があります。

レガシーAPIを使用する場合は、ACCESSBRIDGE_ARCH_LEGACYを定義してください。

JOBJECT64は、64ビット・システムではjlong、レガシー・バージョンのJava Access Bridgeではjobjectとして定義されています。定義については、AccessBridgePackages.hヘッダー・ファイルのセクションACCESSBRIDGE_ARCH_LEGACYを参照してください。

- typedef void (*AccessBridge_FocusGainedFP) (long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef void (*AccessBridge_FocusLostFP) (long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef void (*AccessBridge_CaretUpdateFP) (long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef void (*AccessBridge_MouseClickedFP) (long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef void (*AccessBridge_MouseEnteredFP) (long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef void (*AccessBridge_MouseExitedFP) (long vmID, JOBJECT64
event, JOBJECT64 source);

- typedef void (*AccessBridge_MousePressedFP)
(long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef
void (*AccessBridge_MouseReleasedFP) (long vmID, JOBJECT64 event,
JOBJECT64 source);

- typedef void (*AccessBridge_MenuCanceledFP)
(long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef
void (*AccessBridge_MenuDeselectedFP) (long vmID, JOBJECT64 event,
JOBJECT64 source);

- typedef void (*AccessBridge_MenuSelectedFP)
(long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef
void (*AccessBridge_PopupMenuCanceledFP) (long vmID JOBJECT64 event,
JOBJECT64 source);

- typedef void (*AccessBridge_PopupMenuWillBecomeInvisibleFP)
(long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef
void (*AccessBridge_PopupMenuWillBecomeVisibleFP) (long vmID, JOBJECT64
event, JOBJECT64 source);

- typedef void (*AccessBridge_PropertyNameChangeFP)
(long vmID, JOBJECT64 event, JOBJECT64 source, wchar_t *oldName, wchar_t
*newName);

- typedef void (*AccessBridge_PropertyDescriptionChangeFP)
(long vmID, JOBJECT64 event, JOBJECT64 source, wchar_t *oldDescription,
wchar_t *newDescription);

- typedef void (*AccessBridge_PropertyStateChangeFP)
(long vmID, JOBJECT64 event, JOBJECT64 source, wchar_t *oldState,
wchar_t *newState);

- typedef void (*AccessBridge_PropertyValueChangeFP)
(long vmID, JOBJECT64 event, JOBJECT64 source, wchar_t *oldValue,
wchar_t *newValue);

- typedef void (*AccessBridge_PropertySelectionChangeFP)
(long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef
void (*AccessBridge_PropertyTextChangeFP) (long vmID, JOBJECT64 event,
JOBJECT64 source);

- typedef void (*AccessBridge_PropertyCaretChangeFP)
(long vmID, JOBJECT64 event, JOBJECT64 source, int oldPosition, int
newPosition);

- typedef void (*AccessBridge_PropertyVisibleDataChangeFP)
(long vmID, JOBJECT64 event, JOBJECT64 source);

- typedef
void (*AccessBridge_PropertyChildChangeFP) (long vmID, JOBJECT64 event,
JOBJECT64 source, JOBJECT64 oldChild, JOBJECT64 newChild);

- typedef void (*AccessBridge_PropertyActiveDescendentChangeFP)
(long vmID, JOBJECT64 event, JOBJECT64 source, JOBJECT64 oldActiveDescendent,
JOBJECT64 newActiveDescendent);

Java Access Bridgeのトラブルシューティング

このトピックでは、Java Access Bridge用ユーザー補助テクノロジ・アプリケーション開発者向けに、既知の問題点および使用上のヒントについて説明します。

既知の問題点

メニュー・イベントを再登録すると重複コピーが生成される: メニュー・イベントを登録して登録解除してから再登録すると、Java Access Bridgeはメニュー・イベントの重複コピーを生成します。

メニューが閉じられたときにMenuDeselectedイベントが生成される: MenuCanceled (またはPopupMenuCanceled)イベントを受信しません。メニューが閉じていることを確認するには、MenuDeselectedイベントを調べてください。

使用上のヒント

メニュー項目の選択の変更の判断: StateのPropertyChangeイベントを使用して、メニュー項目選択の変更を判断します(たとえば、ユーザーが矢印ボタンまたはキーを使用してメニュー内で上下に移動したとき)。

GUI要素の追跡: AccessibleValueサポートとValueのPropertyChangeイベントを使用して、GUI要素(スライダやスクロール・バーなど)の値を追跡します。

選択項目の判断: AccessibleSelectionサポートを使用して、リストや表などの項目が含まれているコンテナで選択されている項目を判断します。これは、すべての子要素を列挙し、StateSet属性を検査し、Selected値がそれらの中にあるかどうか確認するよりも効率的です。

Java Access Bridgeテスト・ツール: Java Access Bridgeテスト・ツールjaccessinspectorおよびjaccesswalkerは、Java binデイレクトリにあります。

3 Accessibilityのプロパティ

javax.accessibilityパッケージには次のプロパティが提供されています: assistive_technologiesおよびscreen_magnifier_present。

内容は次のとおりです

- ユーザー補助テクノロジのロード

- 画面拡大機能の存在を示す

- プロパティの設定

ユーザー補助テクノロジのロード

assistive_technologiesプロパティは、ユーザー補助テクノロジをJVMにロードするように指定します。カンマで区切ったサービス・プロバイダ名のリストが必要です。javax.accessibilityパッケージのjavax.accessibility.AccessibilityProvider抽象クラスおよびjava.awt.Toolkit.getDefaultToolkitメソッドを参照してください。

画面拡大機能の存在を示す

screen_magnifier_presentプロパティがtrueに設定されている場合、Javaプラットフォーム・ライブラリは画面拡大機能がシステムに存在することを認識できます。アプリケーション開発者はこのプロパティをチェックし、画面拡大機能が存在する場合には、アプリケーションが画面拡大機能に対応していることを確認するようにしてください。たとえば、Microsoft Windowsオペレーティング・システムでは、Java 2D APIのリファレンス実装がこのプロパティをチェックして、trueの場合には画面拡大機能での問題を回避するためにMicrosoft DirectDrawをオフにします。(一部の画面拡大機能は、DirectDrawグラフィックスを拡大できない場合があります。)

プロパティの設定

次のコマンドで、実行時にプロパティを設定します。

java -Djavax.accessibility.assistive_technologies=ServiceProviderName

ServiceProvicerNameは、ユーザー補助テクノロジ機能を追加するサービス・プロバイダの名前です。javax.accessibility.AccessibilityProvider.getNameメソッドを参照してください。

プロパティは、ユーザーのホーム・ディレクトリの.accessibility.propertiesという名前のファイルまたは$JAVA_HOME/confのaccessibility.propertiesという名前のファイルにも指定できます。前者の場合、プロパティは現在のユーザーに対して使用され、後者の場合、プロパティはそのJavaインストールのすべてのユーザーに対して使用されます。現在のユーザーに対して設定されたプロパティは、Javaインストールに対して設定されたプロパティより優先されます。

次のような行を追加して、プロパティをaccessibility.propertiesファイルに設定します。

assistive_technologies=ServiceProviderName
screen_magnifier_present=true

注意:
カンマで区切ったリストで、複数のサービス・プロバイダをassistive_technologiesプロパティに指定できます。

4 Java Accessibilityユーティリティの概要

Javaアプリケーションへのアクセスを提供するために、ユーザー補助テクノロジには、Java Accessibility APIの他に、Java Accessibility APIを実装するユーザー・インタフェース(UI)オブジェクトの検索、JVMへのユーザー補助テクノロジ・サポートのロード、および追跡イベントも必要です。Java Accessibilityユーティリティは、このサポートを提供します。

Java Accessibilityユーティリティは、パッケージcom.sun.java.accessibility.utilに含まれ、JVMで実行しているJavaアプリケーション内のUIオブジェクトをユーザー補助テクノロジが検出およびクエリーするために必要なサポートを提供します。これらのオブジェクトへのイベント・リスナーのインストールのサポートも提供します。これらのイベント・リスナーにより、UIオブジェクトが他のUIオブジェクトで発生している特定のイベントについて、委任イベント・モデルにより定義されたピアツーピア・アプローチを使用して知ることができます。このパッケージは、次の主要な要素で構成されています。

- Javaアプリケーションに関する重要な情報

- ユーザー補助テクノロジの自動ロード

- イベントのサポート

Javaアプリケーションに関する重要な情報

com.sun.java.accessibility.utilパッケージには、JVMで実行しているJavaアプリケーションに関する重要な情報を取得するためのメソッドが含まれています。このサポートには、Javaアプリケーションのすべてのトップレベル・ウィンドウのリスト、トップレベル・ウィンドウが表示された(および非表示になった)ときに通知されるイベント・リスナー、入力フォーカスを持つウィンドウの検索や、マウス位置の検索、およびシステム・イベント・キューへのイベントの挿入のための方法が提供されます。

ユーザー補助テクノロジの自動ロード

ユーザー補助テクノロジがJavaアプリケーションで機能するには、アクセス先のJavaアプリケーションと同じJVMにロードします。これは、assistive_technologiesプロパティを使用して行います。ユーザー補助テクノロジのロードを参照してください。このサポートは、クラスEventQueueMonitorにあります。

イベントのサポート

Java Accessibilityユーティリティには、Java仮想マシンのイベントをモニターするための3つのクラスが含まれています。最初のクラスAWTEventMonitorは、JVMで実行しているすべてのAWTコンポーネントのすべてのAWTイベントをモニターするための方法を提供します。このクラスは、基本的に、システム全体のAWTイベントをモニターし、各AWTコンポーネント上の各AWTイベント・タイプに対してそのタイプのリスナーをサポートする個別のリスナーを登録します。このように、ユーザー補助テクノロジは「フォーカス・リスナー」をAWTEventMonitorに登録し、これが次に「フォーカス・リスナー」をJVM内のあらゆるJavaアプリケーションのあらゆるAWTコンポーネントに登録できます。これらの個々のリスナーが、リッスンしたイベントを、AWTEventMonitorに最初にリスナーを登録したユーザー補助テクノロジに流し込みます。このように、コンポーネントがフォーカスを取得または失ったとき(たとえばユーザーが[Tab]キーを押したとき)は常に、ユーザー補助テクノロジに通知されます。

2つ目のクラスSwingEventMonitorは、AWTEventMonitorを拡張して、SwingコンポーネントによりサポートされるSwingイベントをモニターするための追加のサポートを提供します。SwingEventMonitorがAWTEventMonitorを拡張するため、ユーザー補助テクノロジのSwingEventMonitorを使用している場合は両方のクラスを使用する必要はありません。

3つ目のクラスAccessibilityEventMonitorは、Accessibleオブジェクトのプロパティ変更イベントのサポートを提供します。ユーザー補助テクノロジがAccessibilityEventMonitorを使用してAccessibleプロパティ変更イベントの通知をリエクストすると、AccessibilityEventMonitorは自動的にAccessibleプロパティ変更リスナーをすべてのコンポーネント上に登録します。さらに、コンポーネントがコンポーネント階層に追加および削除されたときを検出し、それに応じてプロパティ変更リスナーを追加および削除します。Accessibleプロパティ変更がいずれかのコンポーネントに発生すると、AccessibilityEventMonitorがユーザー補助テクノロジに通知します。

Oracleの法律上の注意点

コピーライト

Copyright © 1994-2018, Oracle and/or its affiliates. All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

Pre-General Availability (一般提供前)版のドキュメントについて

このドキュメントがPre-General Availability (一般提供前)版の場合:

このドキュメントはPre-General Availability (一般提供前)版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のPre-General Availability (一般提供前)版のドキュメントについて

このドキュメントが非公開のPre-General Availability (一般提供前)版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のPre-General Availability Trial Agreement (Pre-GAトライアル契約)のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle Partner Network Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティ

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info)か、聴覚に障害のあるお客様は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。