技术开发 频道

增强图形用户界面的可访问性

  在某些情况下,可能还需要修改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被创建时,它首先实例化一个空的 UIDefaults 对象,这个对象可以通过以下方法来填充内容:

  initClassDefaults(UIDefaults)

  initComponentDefaults(UIDefaults)

  initSystemColorDefaults(UIDefaults)

  这些方法中每一个方法都是由该look and feel本身连续地调用的。这些方法连续地将图形化资源(不管是颜色、字体还是图像)存入 UIDefaults 表中惟一的键之下。

  要了解更多细节,参见 javax.swing.plaf.MetalLookAndFeel 类的API 文档(参见 参考资料)。图像的初始化是在 initComponentDefaults(UIDefaults )中进行的。通过重载这个方法,您可以替换在look and feel中用到的任何标准图像。

  不幸的是,存放图标时所参考的键没有相应的文档,但是 javax.swing.plaf.MetalLookAndFeel 类的源代码可以提供这些信息。表 1显示了用于引用Metal look and feel中图标的现有键的列表:

  表 1. 用于引用Metal look and feel中图标的键

CheckBox.iconInternalFrame . closeIcon
RadioButton.iconInternalFrame.maximizeIcon
InternalFrame.iconInternalFrame.iconifyIcon
InternalFrame.iconifyIconInternalFrame.minimizeIcon
FileView.directoryIconMenu.checkIcon
FileView.fileIconMenu.arrowIcon
FileView.computerIconMenuItem.checkIcon
FileView.hardDriveIconMenuItem.arrowIcon
FileView.floppyDriveIconCheckBoxMenuItem.checkIcon
FileChooser.detailsViewIconCheckBoxMenuItem.arrowIcon
FileChooser.homeFolderIconRadioButtonMenuItem.checkIcon
FileChooser.listViewIconRadioButtonMenuItem.arrowIcon
FileChooser.newFolderIconTree.openIcon
FileChooser.upFolderIconTree.closedIcon
Slider.horizontalThumbIconTree.leafIcon
Slider.verticalThumbIconTree.expandedIcon
InternalFrame.iconTree.collapsedIcon
InternalFrame.paletteCloseIcon

0
相关文章