gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:40:37 25 4
gpt4 key购买 nike

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

我已经像下面这样设置了 AccessibleContext:

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

我可以将 listeners 设置为检测鼠标何时悬停在其上的对象,但我不知道是否/如何将文本转换到屏幕阅读器上进行阅读。我尝试了 ToolTipText,但屏幕阅读器也无法读取该文本。 JMenu 上的 RequestFocus 有效,但仅通过将鼠标悬停在对象上来将焦点设置到对象会带来其他问题。

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

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

最佳答案

无论如何,与 SWT 相比,Swing 是与 Java 中的可访问性相关的 GUI 技术中较弱的一种。您可以尝试几件事。

首先是确保设置了所有辅助功能字段(您已经开始设置)。我不记得 Java 是否有 AccessibleRole 字段,但您可以尝试将其设置为菜单项的 menu 和 menuitem。

您可以尝试的另一件事是 AccessibleMenu JMenu.AccessibleJMenu 组件。这是延伸阅读的产物,所以我无法从经验中验证它。但它及其周围的类可能适合您的需要。

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

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

我希望这些建议之一可以帮助您解决问题。

关于java - 当鼠标悬停在 Java/Windows 中的 JMenu 对象上时听到文本(屏幕阅读器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15428323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com