SUN公司为我们提供了三种可插拔界面(pluggable look-and-feel, 即PLAF)外观,分别为Metal(JAVA的界面外观),Windows和Motif(模拟Unix/X),分别由以下三个类实现:
javax.swing.plaf.metal.MetalLookAndFeel
com.sun.java.swing.plaf.windows.WindowsLookAndFeel
com.sun.java.swing.plaf.motif.MotifLookAndFeel
swing应用程序在启动时,首先会读取系统属性swing.defaultlaf来确定默认界面外观的类名称,一般情况下该属性设置为默认JAVA外观。
设置外观时只需要调用两个方法,即 UIManager.setLookAndFeel(plaf),参数为String类型,内容是上面的类的名称和SwingUtilities.updateComponentTreeUI(window);参数为Window类型,即所要设置外观的窗体。
设置这三种界面,我已经封装为静态方法,代码如下:
/** * 该类包装了设置JFrame实体的相关方法。此类必须在jre1.6以上版本使用。 * Copyright: Copyright (c) * Company: DiaoxianSoft development team * @author Geek_Soledad * @creation date 2011-06-24 上午09:58:33 * @version 0.1 */ package easyJFC; import java.awt.Window; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class WindowOption { /** * 设置为Metal外观。 * * 当对窗体调用了setContentPane()时,本方法应该在其之后调用。 * * @param window 将要设置的对象 */ public static void setLookAndFeelAsMetal(Window window){ String plaf = "javax.swing.plaf.metal.MetalLookAndFeel"; setWindowStyle(plaf, window); } /** * 设置为Motif外观。 * * 当对窗体调用了setContentPane()时,本方法应该在其之后调用。 * * @param window 将要设置的对象 */ public static void setLookAndFeelAsMotif(Window window) { String plaf = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; setWindowStyle(plaf, window); } /** * 设置为Windows外观。 * * 当对窗体调用了setContentPane()时,本方法应该在其之后调用 * * @param window 将要设置的对象 */ public static void setLookAndFeelAsWindows(Window window) { String plaf = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; setWindowStyle(plaf, window); } /** * 设置窗体风格。 * * @param plaf * @param window */ private static void setWindowStyle(String plaf, Window window) { try { UIManager.setLookAndFeel(plaf); SwingUtilities.updateComponentTreeUI(window); } catch(Exception e) { e.printStackTrace(); } } }
上面代码已被收录在我的diaoxianSoft中的easyJFC包中。此包暂未完善,亦未做正规测试,不知其有多大通用性,仅作为我个人的私有包,在自己写代码中使用。
JFC系列将分享一些常见但又让我们这些新手头疼的问题的解决方法,希望大家继续关注,也希望大家一起分享自己的成果。