Как мне заставить Рассказчика Vista читать мои компоненты Swing обратно мне? - PullRequest
4 голосов
/ 25 июня 2009

Я пытаюсь реализовать очень, очень простой тест доступности для Swing, чтобы я мог понять, насколько большой объем работы будет для обеспечения поддержки доступности для нашего уже установленного приложения Swing .

У меня самая простая программа на Swing, и я использую Narrator в Windows Vista, чтобы попытаться прочитать экран с ее графическим интерфейсом.

public class ReadableFrame extends JFrame {

     private ReadableFrame() {
         super();

         setTitle( "Banjollity's Window" );
         setSize( 640, 580 );
         setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE );

         JButton button = new JButton( "Hello World" );

         getContentPane().setLayout( new FlowLayout() );
         getContentPane().add( button );

         setVisible( true );
     }

    /**
     * @param args
     */
    public static void main( String[] args ) {
        new ReadableFrame();
    }
}

Рассказчик может прочитать заголовок, но больше ничего. Я получаю « Окно Банжолли, не содержит других известных элементов управления ». Если я заменю Swing JButton на кнопку AWT следующим образом:

Button button = new Button( "Hello World" );

... тогда все работает правильно, и я получаю « Окно Банджолли, с фокусом на кнопке Hello World, содержит кнопку Hello World ».

Я пытался установить Java Access Bridge в JRE / lib / ext (и я сильно подозреваю, что это работает должным образом, так как моя программа отказалась запускать мое приложение, пока я не поместил DLL в Windows / System32), но безрезультатно.

Кто-нибудь может помочь или поделиться несколькими предложениями?

Ответы [ 4 ]

4 голосов
/ 26 июня 2009

Нет, Наратор плохой читатель экрана. Вам необходимо установить java access bridge, а затем использовать либо jaws , который будет работать в течение 40 минут за один раз в качестве демонстрационной версии, либо NVDA , которая является бесплатной программой чтения с экрана, также поддерживающей Java .

0 голосов
/ 28 июня 2009

К сожалению, ваши компоненты Swing должны реализовать интерфейс IAccessible , как только это будет сделано, Narrator сможет обнаружить компоненты и прочитать их содержимое. Без этого у него нет возможности обнаружить элементы управления.

0 голосов
/ 25 июня 2009

Кажется, это какая-то проблема с Рассказчиком. Если я использую JAWS с моей виртуальной машиной, поддерживающей Java Access Bridge, тогда он прекрасно читает каждый компонент на экране.

0 голосов
/ 25 июня 2009

Как показывает ваш вывод с помощью Button, если Narrator желает читать метки в собственных приложениях Windows, возможно, вы могли бы использовать компоненты с большим весом, чтобы ОС узнала о них, и, в свою очередь, Narrator прочитает их.

...