改善Swing窗口可访问性

时间:2010-11-02 21:23:06

标签: java swing accessibility section508

我有一个Swing JFrame,它包含几个JLabel,一些只读的JEditorPanes和几个按钮。 JAWS用户要求在不需要用户交互的情况下读取应用程序。现在,应用程序以焦点中的某个元素开始,用户必须按Tab键才能移动焦点并继续下一个元素。例如,对于网页,JAWS只会通过并阅读所有内容,而无需用户按Tab键。对于我们的JAWS用户来说特别烦人的是,只读JEditorPanes一次只读取一行文本,要求用户按下上下箭头键在它们之间移动。

如何让这个JFrame更流畅地读给JAWS版本9用户?

1 个答案:

答案 0 :(得分:1)

您可以这样做,但需要使用不受支持的Jaws COM API。 Jaws以与网站不同的方式与桌面应用程序交互。 Jaws将网页呈现为虚拟缓冲区并执行各种魔术以使其更易于使用。 Jaws不会为桌面应用程序执行此操作。我假设它没有这样做的部分原因是桌面应用程序没有可用于创建HTML可用的替代演示模式的所有信息。对于什么是值得的,即使Jaws附带的实用程序也不会自动拥有只读的编辑字段。如果您确实需要这样做,那么最好的选择可能是当用户给予焦点时,通过jaws api说出只读编辑字段的内容。这将需要在Java应用程序中使用COM来访问api。我知道有一些java库可以让你以某种形式使用COM,但我从来没有这样做过。您可以在标准的Jaws安装目录中找到api的副本,在我的情况下是

c:\program files\Freedom Scientific\jaws\jfwapi.dll

您必须使用自己喜欢的应用程序查看COM库以确定可用的方法,因为我找不到官方文档。您可能还想查看以下代码示例,它位于AutoIt中,但是大致了解如何使用多个屏幕阅读器说出文本。 http://www.scribd.com/doc/19371/speak-with-autoit