技术开发 频道

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

  清单 2 显示了基于Metal look and feel以及为提供可定制的、高对比度的look and feel而创建的颜色模式的一种通用look and feel的源代码。

  第9行到第16行是装载定义了该look and feel的一些属性的外部资源文件。 这几行代码建立了一个定制的主题,该主题的颜色和字体是以外部文件定义的。

  第18行到第20行重写了 MetalLookAndFeel 的一些标准方法,以便将该look and feel的名称、描述和ID也放在外部资源文件中定义。

  第22行到第53行修改了该look and feel的UIDefaults,以便通过在外部资源文件中定义的一个缩放比例来放大标准图标。真正的放大工作是由 MagnifiedIcon 这个内部类来做的(第95行到第113行)。

  第56行到第92行是这个定制的主题的实现。这些代码首先从资源文件中读出要使用的字体的名称和大小(第64行到第70行)。然后重写 DefaultMetalTheme 的getter方法,以便使用在外部资源文件中定义的颜色和字体。

  清单3显示了用于Black on White Look and Feel, Large Fonts的外部资源文件。这个look and feel所使用的字体大小被设置为30(第5行),图标被放大到初始大小的250%(第3行),基本颜色则被设置为黑色和白色(第6行到第15行)。

  清单 3. HighContrastLAF.properties:白背景,黑文本

1 1  name = High Contrast Look And Feel
2 2. description = Black on white, large fonts
3 3. iconMagnificationFactor = 2.5
4 4. fontName = Dialog
5 5. fontSize = 30
6 6. backgroundColor = FFFFFF
7 7. foregroundColor = 000000
8 8. primaryColor1 = 000000
9 9. primaryColor2 = FFFFFF
10 10. primaryColor3 = FFFFFF
11 11. secondaryColor1 = 000000
12 12. secondaryColor2 = C0C0C0
13 13. secondaryColor3 = FFFFFF
14 14. selectionForeground = FFFFFF
15 15. selectionBackground = 000000
16

  图 4 显示了这个look and feel的屏幕截图。

  图 4.白背景,黑文本

  通过与之相同的方法,您可以创建一个带有白文本、黑背景、普通大小字体的高对比度的look and feel,您只需提供如清单4所示的另一个资源文件。

  清单 4. HighContrastLAF.properties:黑背景,白文本

  图 5 显示了清单4的结果。

  图 5. 黑背景,白文本

  在您的Java应用程序中使用新的look and feel

  通过在 main 方法中第一个窗口小部件创建之前调用下面一行代码,您便可以在任何Swing应用程序中使用新创建的look and feel:

1 UIManager.setLookAndFeel("HighContrastLAF");
2

  理想情况下, 您的产品应该能够提供一个对话框或者偏好选择页面,以便用户能够选择他们中意的look and feel。但是,如果您不想在这方面花那么大的力气,那么一种更轻松的解决方案是使用系统属性来允许用户在启动该程序的命令行中指定look and feel,如清单5所示。

  清单 5. 从系统属性初始化LAF

1 String plaf = System.getProperty("plafName") ;
2 if (plaf!=null) try {
3   UIManager.setLookAndFeel(plaf);
4 } catch (Exception e) { ("Error loading PLAF "+plaf+":"+e);}
5

  当用户启动应用程序时,他们可以通过在命令行中使用以下语法来选择一个特定的look and feel:

1 java -DplafName=HighContrastLAF -classpath
2         CLASSPATH MAINCLASS ARGUMENTS
3

  结束语

  在本文中,我们展示了定制跨平台的Metal look and feel是件多么容易的事情。正如我们所讨论的,这件事可以通过继承 MetalLookAndFeel 和 DefaultMetalThemes 类来完成。我们还展示了如何轻松地通过使用矢量图标来对图标进行放大。您可以在您的项目中直接使用本文提供的源代码,或者适当地作些修改,以便为弱视用户提供更多的定制空间。

  下载本文的 完整的源代码

0
相关文章