4

我正在尝试为 Swing 实现一个非常、非常简单的可访问性测试,这样我就可以了解为我们已经建立的 Swing 应用程序提供可访问性支持的工作量有多大。

我有最简单的 Swing 程序,我在 Windows Vista 中使用讲述人来尝试通过屏幕阅读它的 GUI。

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 的窗口,不包含其他已知控件”。如果我将 Swing JButton 替换为 AWT 按钮,如下所示:

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

...然后它正常工作,我得到“ Banjollity 的窗口,专注于 Hello World 按钮,包含 Hello World 按钮”。

我已经尝试将Java Access Bridge安装到 JRE/lib/ext(我强烈怀疑这工作正常,因为我的程序拒绝启动我的应用程序,直到我将 DLL 放入 Windows/System32 中)但无济于事。

任何人都可以提供帮助或分享一些建议吗?

4

4 回答 4

4

你不知道,Narator 是一个糟糕的屏幕阅读器。您需要安装 java 访问桥,然后使用一次运行 40 分钟的作为演示或NVDA,它是一个也支持 Java 的免费屏幕阅读器。

于 2009-06-26T00:30:29.247 回答
0

似乎这是讲述人的一些问题。如果我将JAWS与启用 Java Access Bridge 的 VM 一起使用,那么它可以很好地读取屏幕上的每个组件。

于 2009-06-25T18:47:56.023 回答
0

正如您对 Button 的调查结果显示,如果讲述人愿意阅读本机 Windows 应用程序上的标签,那么您也许可以使用重量级的组件,以便操作系统了解它们,然后讲述人将阅读它们。

于 2009-06-25T13:10:39.763 回答
0

不幸的是,您的 Swing 组件需要实现IAccessible接口,一旦完成,讲述人就可以发现组件并读取它们的内容。没有它,它就无法发现控件。

于 2009-06-28T04:18:26.230 回答