现在的位置: 首页 > 综合 > 正文

封装的Swing设置外观的类

2013年08月29日 ⁄ 综合 ⁄ 共 1196字 ⁄ 字号 评论关闭
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class UILookAndFeelManager {

    public static final String LOOK_AND_FEEL_WINDOWS = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
    public static final String LOOK_AND_FEEL_METAL = "javax.swing.plaf.metal.MetalLookAndFeel";
    public static final String LOOK_AND_FEEL_MOTIF = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";
    public static final String LOOK_AND_FEEL_NIMBUS = "javax.swing.plaf.nimbus.NimbusLookAndFeel";
    public static final String LOOK_AND_FEEL_WINDOWS_CLASSIC = "com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel";
    private static String currentLookAndFeel = "";

    public synchronized static void setLookAndFeel(String lookAndFeel) {

        if (lookAndFeel.equals(currentLookAndFeel)) {
            return;
        }

        currentLookAndFeel = lookAndFeel;

        try {

            UIManager.setLookAndFeel(currentLookAndFeel);
        } catch (ClassNotFoundException | InstantiationException
                | IllegalAccessException | UnsupportedLookAndFeelException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        SwingUtilities
                .updateComponentTreeUI(这里为您的JFrame对象或JApplet对象,自己想办法传过来吧,比如在本类中添加一个静态变量);//这里需要注意的地方是: 如果通过JApplet中的菜单来更改外观,那么这条语句的参数需要为this,但是会提示不能用this作为参数,这也就是为何这里要把更改外观作为单独一个类的原因。
    }
}

抱歉!评论已关闭.