2009-06-25 3 views
4

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

У меня есть самая простая программа Swing, и я использую рассказчик в 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(); 
    } 
} 

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

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

... то он работает правильно, и я получаю «Window Banjollity, в центре внимания на кнопке Hello World, содержит кнопку Hello World».

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

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

ответ

4

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

+1

Очень приятная особенность NVDA заключается в том, что он поддерживает режим, в котором устный текст появляется в плавающем окне, поэтому вам не нужно слушать жуткий компьютерный голос при разработке для него. –

0

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

+0

@ kd304 Мне нужно, чтобы он работал с Swing. Боюсь. У нас есть установленное приложение Swing, которое мы хотим добавить. – banjollity

+0

Если вы используете качели, это не исключает компоненты AWT, за исключением того, что вам не нравится внешний вид. По крайней мере, для этикеток вы можете попробовать. – akarnokd

0

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

0

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