我要求JAWS版本9读取禁用的JButton。即如果我有一个文本为“True”的JButton,则应该读取类似“True,disabled button”的内容。但是当我使用setEnabled(false)
时,它不再参与制表符焦点序列,因此永远不会被读取。是否可以像我所描述的那样使JAWS禁用JButton?
我的“解决方案”现在是模拟禁用的按钮并设置可访问的名称,如下所示:
button.setForeground(Color.GRAY);
button.getAccessibleContext().setAccessibleName(buttonText + " disabled");
但我真的宁愿使用真正的禁用按钮。
答案 0 :(得分:2)
作为一个不得不与许多摇摆界面作斗争的下颚用户,我不相信这是可能的,你应该坚持你的解决方案。另外值得注意的是,Oracle已经停止了Java Access Bridge的工作,因此Java的新版本将来可能不适用于Java。我找不到确认或否认这种或那种方式的链接。即使Oracle没有停止对Access Bridge的支持,过去几年也没有任何有意义的工作。我不认为使用带有Jaws和Swing的64位JVM是可能的,但我可能错了。一般来说,Swing和Jaws的可访问性非常差,除非您在受控环境中确保用户不通过先前的测试升级到新版本的软件。虽然我理解用户界面重写是非常重要的,如果将来要完成,我会考虑从Swing转向SWT。 SWT适用于开箱即用的钳口,因为它在封面下使用标准控件。我使用Eclipse作为一个相当容易访问的IDE,除了UML编辑器之外我所看到的所有SWT应用程序都可以通过Jaws轻松访问,而且没有自定义。