如何让 NVDA 读取 Swing/GUI 元素
How to let NVDA read Swing / GUI elements
我正在使用 Eclipse ide 进行 Java 开发。当我执行下面的代码时,NVDA 只读到“This is a frame”。它不读取按钮。
导入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 和 access bridge 已经过时并且有点过时了。对于较新的项目,您应该使用另一个 GUI 库。
要制作可访问的 GUI,您可以改用 SWT。
由于一长串问题,我最终切换到 Eclipse for Java EE。大约在同一时间,我还更新了我的 NVDA。根据更新的新增功能部分,他们对 Java AccessBridge 进行了一些改进。
我不确定是 NVDA 更新还是切换到 Java EE,但一切正常。
我正在使用 Eclipse ide 进行 Java 开发。当我执行下面的代码时,NVDA 只读到“This is a frame”。它不读取按钮。
导入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 和 access bridge 已经过时并且有点过时了。对于较新的项目,您应该使用另一个 GUI 库。 要制作可访问的 GUI,您可以改用 SWT。
由于一长串问题,我最终切换到 Eclipse for Java EE。大约在同一时间,我还更新了我的 NVDA。根据更新的新增功能部分,他们对 Java AccessBridge 进行了一些改进。 我不确定是 NVDA 更新还是切换到 Java EE,但一切正常。