我创建了一个CCombo
对象。我添加了AccessibilityControlListener
并覆盖了getRole(AccessibleControlEvent e)
方法。方法内的代码是
e.detail = ACC.ROLE_COMBOBOX;
但屏幕阅读器(JAWS)仍然将CCombo读为编辑只读。但它应该读取组合框,因为我已经覆盖了默认角色。但它似乎没有用。此外,CCombo对象甚至不会响应被覆盖的 accessiblitylistener 或 accessibilitycontrollistener 方法。
答案 0 :(得分:1)
(这不是答案,但是评论字段用完了空间)
除了大多数SWT小部件之外,CCombo
不是本机小部件。相反,它由其他(本机)小部件组成,即文本,按钮和列表。显然,并非所有可访问性事件都被覆盖或重定向到正确的小部件。
SWT Bugzilla列出了CCombo
和可访问性(搜索'ccombo accessibility')的几个问题。查看错误的年龄和活动,似乎不太可能很快修复它们。
如果您可以选择使用(本机)Combo
小部件,那么最好还是可以选择。
根据您需要修复的绝望程度,您还可以编写自己的CCombo
并修复其中的辅助功能问题。当然,只有当您的代码创建了所有CCombo
时。
了解窗口小部件的内部结构,您还可以将相应的辅助功能侦听器附加到相应的子级(文本,按钮,列表),如果这足以解决您的问题。