快速业务通道

为可访问性编码: 用JFC/Swing将可访问性构建到您的Java应用 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
有的值,因此它提供了实现可选参数的多个构造器。 当使用 setAccessibleValues 方法时,最好使用这个方法而不是组件的普通方法来设置 组件的文本(如果有的话)。清单 6 说明了如何使用 setAccessibleValues 方法设置按 钮组件的值:

清单 6. 按钮组件的 setAccessibleValues

JButton b = new JButton(); AccessibleUtils.setAccessibleValues(null, (Accessible)b,    new AccessibleUtils.AccessibleValues(      "button1",      "OK",      "OK Button",      "Activate to commit changes and continue",      "Commit changes",      (int)''O'');

尽管清单 6 中的代码与 清单 2中的按钮序列所做的事情相同,但它有下列优点:

如果遗漏了必需的参数,则 setAccessibleValues() 语法会强制产生一个错误。

setAccessibleValues() 方法比清单 2 中的按钮序列更简洁(如果将所有参数都放到 一行中,该方法甚至只需较少几行就可以了)。

因为调用了一个方法,该方法可以执行额外的处理和验证。

通过转换由 java.util.ResourceBundle 提供的文本,可以自动地支持国际化。

为可访问性编码: 用JFC/Swing将可访问性构建到您的Java应用(6)

时间:2011-04-03 IBM Barry A. Feigenbaum

实际使用的实用程序方法

清单 7 显示了 setAccessibleValues() 方法是如何工作的。首先研究代码,然后查 看后面的注释。

清单 7. 实际使用的 setAccessibleValues()

protected static final Class[] _sType = {String.class}; protected static final Class[] _iType = {Integer.TYPE};    : Accessible setAccessibleValues(      ResourceBundle rb, Accessible a, AccessibleValues av) {     if ( av.name != null ) {       throw new NullPointerException(         "accessible components require a name");     }     if ( a instanceof Component ) {   // nearly always true       ((Component)a).setName(av.name);     }     if ( av.text != null ) {       Method m = resolveMethod(a, "setText", _sType);     try {        invokeMethod(a, m, new String[] {resolveString(rb, av.text)});       }       catch ( Exception e ) {         throw new AccessibleException(           "cannot invoke method setText(String text) - " + a, e);       }     }     if ( av.borderText != null ) {       JComponent c = (JComponent)a;       Border b = c.getBorder();       Border tb = new TitledBorder(resolveString(rb, av.borderText));       c.setBorder(b != null ? new CompoundBorder(b, tb) : tb);     }     if ( av.toolTip != null ) {      String text = resolveString(rb, av.toolTip.equalsIgnoreCase ("=ld")         ? av.longDescription : av.toolTip);      if ( a instanceof JComponent ) {         ((JComponent)a).setToolTipText(text);      }      else if ( a instanceof ImageIcon ) {         ((ImageIcon)a).setDescription(text);      }     }     if ( av.mnemonic >= 0 ) {       Method m = resolveMethod(a, "setMnemonic", _iType);       if ( m == null ) {         m = resolveMethod(a, "setDisplayedMnemonic"

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号