增强图形用户界面的可访问性 - 编程入门网
ngSet演示程序的两个屏幕截图,这个演示程序是随JSDK一起提供的。这两个图演示了不同的主题是如何改变一个应用程序的外观的,而且,这里的应用程序使用的是同一个look-and-feel。
图 1. 默认的主题 图 2. 高对比度主题 因此,定制Metal look and feel 很容易,只需: 创建一个新的扩展 javax.swing.plaf.metal.MetalTheme 的类,或者创建 javax.swing.plaf.metal.MetalTheme 的默认实现 javax.swing.plaf.metal.DefaultMetalTheme (参见 参考资料部分中给出的Java API文档的参考提示)。 重载这个主题类的 getXXXFont() 或者 getXXXColor() 方法,使这两个方法能返回在新主题中需要用到的字体或颜色。 通过调用 MetalLookAndFeel.setCurrentTheme(theme) 静态方法设置Metal look and feel中的新主题。 javax.swing.plaf.metal.MetalTheme 的Java API文档(参见 参考资料)表明,您可以重载大约50个不同的方法,在一个细粒度的程度上定义必须使用的颜色和字体。不幸的是,大部分的这些方法都没有相应的文档,这使得测试每个方法以检查它对用户界面的影响这样的一项任务相当烦人。 幸运的是,您通常不需要重载所有这些方法便可以得到一个可接受的结果――如果 vax.swing.plaf.metal.MetalTheme 提供了众多的方法,那么它的默认实现 javax.swing.plaf.metal.DefaultMetalTheme 也会以一致的方式实现大部分的这些方法,这样一来这些方法就会返回以下方法中某个方法的结果: getBlack() getWhite() getPrimary1() getPrimary2() getPrimary3() getSecondary1() getSecondary2() getSecondary3() getControlTextFont() getMenuTextFont() getSubTextFont() getSystemTextFont() getUserTextFont() getWindowTitleFont() 因而,继承 javax.swing.plaf.metal.DefaultMetalTheme 和重载这8种颜色及6种字体通常就足以获得一个一致的新主题。 不用硬编码这些方法(Java平台提供的主题中就是硬编码的),相反,一个好主意是实现一个能返回在外部资源文件中指定的颜色和字体的通用的主题。通过这种方式,我们可以轻易地定义一个新主题――我们只需要使用任何文本编辑器编辑一些值。 增强图形用户界面的可访问性(3)时间:2011-02-07 IBM Yannick Saillet修改图标 在某些情况下,可能还需要修改look and feel所使用的一些图标和图形资源。例如,您可能想修改复选框和单选按钮所使用的图标以便绘出它们的状态,或者使用其他的图标来绘制文件夹和树组件的节点。 例如,如果您希望某个look and feel带有大号字体,那么就需要修改图标。复选框和单选按钮所使用的图标的尺寸应该与它们的字体相适应。如果弱视用户不能辨认某个选框是否被选中,那么即使是带有大字体的复选框对他(她)来说也是毫无用处的,因为其图标的尺寸没有改变。 图3 显示了一个高对比度、大字体的但是图标的尺寸没有改变的主题的例子。您可以看到字体大小和图标尺寸之间的不协调。 图 3. 一个高对比度、大字体但是没有调整图标尺寸的主题 不幸的是,在一个主题中图标是不能修改的。因此,如果我们想重载Metal look and feel中使用的图标,我们就必须使用其他的技术。 Metal look and feel将一系列要使用的图形化资源(颜色、字体和图像)存放在一个 javax.swing.UIDefaults 对象中,这个对象基本上就是一种hash表。不同窗口小部件所需的每个图像都被该look and feel以特定的键(key)存放在这个表中,以便于检索。这同时也意味着如果您知道某一特定图像是存放在哪个键之下的,那么您就可以通过将另一个图像存放在同一个键下来替换那个图像。 让我们看看Metal look and feel如何初始化包含了图形化资源的这个表。 当look and feel被创建时,它首先实例化一个 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |