new AccessibleRelation(AccessibleRelation.MEMBER_OF, group);
ars.add(ar);
}
return group;
}
对助记符的支持
一些 Swing 组件不直接支持助记符。正如我先前讨论的,这些 Swing 通过允许 JLabel 来标记组件以弥补这一不足。可访问性工具箱提供了助手方法来辅助对组件作标 记。清单 12 展示了作用于 JTextField 组件的助手方法:
清单 12. 对组件作标记的助手方法
JTextField setupLabelledField(
JPanel lp, JPanel fp, String name, int vKey) {
JLabel l = new JLabel("", JLabel.RIGHT);
AccessibleUtils.setAccessibleValues(resourceBundle, (Accessible)l,
new AccessibleUtils.AccessibleValues(
idGen.nextId("label"),
name,
name + " label",
"=tt",
AccessibleUtils.formatText(resourceBundle,
"Identifies the {0} field", name),
vKey));
lp.add(l);
JTextField tf = new JTextField("", 40);
AccessibleUtils.setAccessibleValues(resourceBundle, (Accessible)tf,
new AccessibleUtils.AccessibleValues(
idGen.nextId("textField"),
null,
name + " entry field",
"=tt",
AccessibleUtils.formatText(resourceBundle,
"Enter the value for {0}", name)));
fp.add(tf);
AccessibleUtils.setLabelRelationship(l, tf);
return tf;
}
为可访问性编码: 用JFC/Swing将可访问性构建到您的Java应用(10)
时间:2011-04-03 IBM Barry A. Feigenbaum
尽管并未显示,但是请注意也应该用 AccessibleUtils.formatText 处理 name + "label" 和 name + "entry field" 子句,以充分地支持国际化转 换。
现在就在清单 13 中查阅方法的细节:
清单 13. setLabelRelationship 助手方法的细节
Accessible setLabelRelationship(Accessible label, Accessible target) {
if ( label instanceof JLabel ) {
((JLabel)label).setLabelFor((Component)target);
/* *** done by setLabelFor ***
AccessibleContext ac1 = label.getAccessibleContext();
if ( ac1 == null ) {
throw new NullPointerException(
"AccessibleContext cannot be null on an Accessible object"
+ formatClassToken(label));
}
AccessibleRelationSet ars1 = ac1.getAccessibleRelationSet();
AccessibleRelation ar1 = new AccessibleRelation(
AccessibleRelation.LABEL_FOR, target);
ars1.add(ar1);
*/
AccessibleContext ac2 = target.getAccessibleContext();
if ( ac2 == null ) {
throw new NullPointerException(
"AccessibleContext cannot be null on an Accessible object"
+ formatClassToken(target));
}
AccessibleRelationSet ars2 = ac2.getAccessibleRelationSet();
AccessibleRelation ar2 = new AccessibleRelation(
|