我正在尝试为Swing实现一个非常非常简单的可访问性测试,这样我就可以了解为我们已经建立的Swing提供可访问性支持的工作量。应用
我有最简单的Swing程序,我在Windows Vista中使用Narrator来尝试屏幕阅读其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的窗口,不包含其他已知的控件”。如果我用这样的AWT按钮替换Swing JButton:
Button button = new Button( "Hello World" );
...然后它正常工作,我得到“ Banjollity的窗口,专注于Hello World按钮,包含Hello World按钮”。
我已经尝试将Java Access Bridge安装到JRE / lib / ext(我强烈怀疑这是正常的,因为我的程序拒绝启动我的应用程序,直到我把DLL放在Windows / System32中)但是没有用。
有人可以提供帮助,还是可以分享一些建议?
答案 0 :(得分:4)
答案 1 :(得分:0)
正如您对Button的调查结果显示,讲述者是否愿意阅读本机Windows应用程序上的标签,那么您可能会使用重量级组件,以便操作系统了解它们,然后讲述者会阅读它们。
答案 2 :(得分:0)
这似乎是讲述者的一些问题。如果我在支持Java Access Bridge的VM上使用JAWS,那么它就可以很好地读取屏幕上的每个组件。
答案 3 :(得分:0)
不幸的是,您的swing组件需要实现IAccessible界面,一旦完成,Narrator就可以发现组件并阅读其内容。没有它,它就无法发现控制。