4

NVDA などのスクリーンリーダーを使用している場合、マウスを上に置いたときにメニューのテキストを読み上げることができるようにしたいと考えています。メニューバーのボタンを押すとテキストを聞くことができますが、それらの上にカーソルを置いたときは聞こえません (ボタンの上にカーソルを置くだけで、スクリーンリーダーは他のプログラムのメニューを読み上げます)。

以下のように AccessibleContext を設定しました。

JMenu.getAccessibleContext().setAccessibleName("text");
JMenu.getAccessibleContext().setAccessibleDescription("more text");

listenersマウスがそれらの上に置かれたことを検出するオブジェクトに設定できますが、テキストをスクリーンリーダーにキャストして読み取ることができるかどうか、またはどのようにキャストできるかはわかりません。試してみToolTipTextましたが、そのテキストもスクリーンリーダーで読み上げられません。RequestFocusJMenu では機能しますが、マウスでオブジェクトにカーソルを合わせるだけでオブジェクトにフォーカスを設定すると、別の問題が発生します。

メニューバーの上にマウスを置いたときに、スクリーンリーダーに JMenu-text を読み取らせる方法を知っている人はいますか?

Windows マシン (XP および w7) で Java6 EE と Java AccessBridge (バージョン 2.02) を使用しています。

4

1 に答える 1

1

Swing は、Java のアクセシビリティーに関連する GUI テクノロジーの中で、とにかく SWT に比べて弱いものです。いくつか試してみることができます。

まず、アクセシビリティ フィールドが設定されていることを確認します (これを開始しました)。Java に AccessibleRole フィールドがあるかどうかは思い出せませんが、それをメニュー項目の menu と menuitem に設定してみてください。

もう 1 つ試すことができるのは、AccessibleMenu JMenu.AccessibleJMenu コンポーネントです。これは、さらに読んだ結果であるため、経験から検証することはできません。しかし、それとその周辺のクラスはあなたのニーズに合うかもしれません。

それらが機能しない場合は、人々のスクリーン リーダーと直接対話するオプションを試すことができます。Quentin C には、これを行うための優れたライブラリUniversal Speechがあります。私はこのライブラリを初めて使用しますが、Java プログラムでの使用方法を示す Java 実装が含まれています。通常、UI をアクセシブルにすることが実際に機能しない場合を除き、このアプローチはお勧めしません。

最後のオプションは、たとえメニュー バーだけであっても、Swing コンポーネントの代わりに SWT コンポーネントを使用することです。あなたがこれにどれだけ熱心かはわかりませんでしたが、これはオプションであり、解決する必要があります.

これらの提案のいずれかが問題の解決に役立つことを願っています。

于 2013-03-24T11:37:18.870 に答える