java - 如何让 NVDA 读取 Swing/GUI 元素

标签 java swing accessibility nvda

我正在使用 Eclipse IDE 进行 Java 开发。当我执行以下代码时,NVDA 仅读取“这是一个帧”。它不读取按钮。

导入 javax.swing.; 导入 javax.accessibility.;

public class MyButton {
    public static void main(String [] args) {
        JFrame f = new JFrame ("This is a frame");
JButton b = new JButton ("This one is a button");
    b.setBounds(50,100,95,30);
//f.add(b);
f.setSize(400,400);
f.setLayout(null);
f.setVisible(true);
b.setToolTipText("This tooltip makes the button accessible");;
}
}

**我已通过轻松访问中心启用了 AccessBridge。我在 Windows 10 上使用 Eclipse 和 NVDA。

最佳答案

正常情况下,它应该可以工作。您可以尝试以下操作:

  • 确保访问桥已启用
  • 安装并启用访问桥后重新启动 NVDA 和您的应用,甚至重新启动
  • 如果您使用的是 64 位系统,请尝试 32 位和 64 位 JVM。两者只能其中之一有效。
  • 确保焦点确实转到按钮上,而不是停留在框架上。焦点可能处于半死状态,您无法阅读任何内容,并且 Tab 键不执行任何操作。
  • Java 8:检查jre\lib\accessibility.properties 是否包含类似assistive_technologies=com.sun.java.accessibility.AccessBridge 的行。我不知道 Java 11+ 是否还存在类似的东西。

请注意,Swing 和访问桥已经过时并且已被弃用。对于较新的项目,您应该使用另一个 GUI 库。 为了使 GUI 易于访问,您可以使用 SWT。

关于java - 如何让 NVDA 读取 Swing/GUI 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60125292/

相关文章:

java - 通过单击 ActionBar 按钮更改 FragmentPagerAdapter 中 fragment 的内容

java - 在 Java 中解析带尾数的 float

java - 纸牌游戏中的玩家顺序

firefox - HTML5 视频和降级?

Java KeyPressed - 如果其他键也被按下,则无法检测空格键是否被按下

JavaBeans - 变量的 getProperty

java - 调用 treeNodesInserted 后,TreeModel 的自定义实现拒绝重新绘制

java - 如何使用另一个组合框 Swing 来控制组合框

java - 如何使 Orca 屏幕阅读器可以访问 Java swing 应用程序?

map - 如何使 Leaflet tile 图层可访问