繁体   English   中英

当鼠标悬停在Java / Windows中的JMenu对象上时,听到文本(屏幕阅读器)

[英]Hear text (screenreader) when mouse hovers over a JMenu object in Java / Windows

当使用屏幕阅读器(如NVDA)时,我希望能够在将鼠标悬停在屏幕上时听到菜单文本。 当我按下菜单栏中的按钮时,我能够听到文字,但是当我将鼠标悬停在菜单栏上时(屏幕阅读器只在鼠标悬停在按钮上时会读取其他程序的菜单)。

我已经设置了AccessibleContext,如下所示:

JMenu.getAccessibleContext().setAccessibleName("text");
JMenu.getAccessibleContext().setAccessibleDescription("more text");

我可以将listeners器设置为检测鼠标悬停在它们上面的对象,但我不知道是否/如何将文本转换为屏幕阅读器进行读取。 我尝试了ToolTipText ,但ToolTipText阅读器也没有读取该文本。 RequestFocus对JMenu起作用,但是只需将焦点悬停在对象上就可以将焦点设置为对象,这会产生其他问题。

当鼠标悬停在菜单栏上时,有谁知道如何让屏幕阅读器读取JMenu文本?

我在Windows机器(XP和W7)上使用Java6 EE和Java AccesBridge(版本2.02)。

与任何速率的SWT相比,Swing是与Java中的可访问性相关的GUI技术中较弱的。 你可以尝试一些事情。

首先是确保设置了任何可访问性字段(您已经开始使用)。 我不记得Java是否有AccessibleRole字段,但您可以尝试将其设置为菜单项和菜单项。

您可以尝试的另一件事是AccessibleMenu JMenu.AccessibleJMenu组件。 这是进一步阅读的产物,所以我无法从经验中验证它。 但它及其周边的课程可能适合您的需求。

如果这些不起作用,您可以尝试直接与人们的屏幕阅读器交谈。 Quentin C有一个很好的图书馆, Universal Speech 我自己是这个库的新手,但它确实有一个Java实现,应该向您展示如何在Java程序中使用它。 通常我不推荐这种方法,除非使UI可访问真的不起作用。

最后一个选项是使用SWT组件而不是Swing组件,即使只是为了您的菜单栏。 我不确定你对这个有多么敏锐,但这是一个选择,应该解决它。

我希望其中一条建议可以帮助您解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM