我有一个要求,即禁止JAWS版本9读取禁用的JButton,即,如果我有一个带有文本“ True”的JButton,则应该读取类似“ True,disabled button”的字样。但是,当我使用setEnabled(false)
时,它不再参与选项卡焦点序列,因此永远不会被读取。如我所描述的,是否可以使禁用的JButton被JAWS读取?
我现在的“解决方案”是模拟禁用的按钮并按如下所示设置可访问名称:
button.setForeground(Color.GRAY);
button.getAccessibleContext().setAccessibleName(buttonText + " disabled");
但是我真的想使用真正的禁用按钮。
最佳答案
作为不得不使用许多挥杆界面的下巴用户,我认为这是不可能的,您应该坚持使用您的解决方案。另一个值得注意的传闻是,Oracle已经停止了Java Access Bridge的工作,因此将来可能无法使用Java的新版本。我找不到一种链接来确认或拒绝这种方式。即使Oracle没有停止对Access Bridge的支持,过去的几年中也没有任何有意义的工作。我认为不可能将64位JVM与Jaws和Swing一起使用,但是我可能错了。通常,除非您处于可控环境中,否则您可以确保Swing和Jaws的可访问性非常差,在这种环境中,您可以确保用户在没有事先测试的情况下不会升级到新版本的软件。虽然我知道如果将来要进行用户界面重写是不平凡的,但我会考虑从Swing迁移到SWT。 SWT开箱即用,因为它在盖子下使用标准控件,因此效果很好。我将Eclipse用作可访问性强的IDE,并且我看过的所有SWT应用程序(除UML编辑器之外)都可以通过Jaws进行访问,并且无需自定义。
关于java - 用JAWS读取禁用的JButton,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4027919/