让你的Java程序外观更酷

Java应用程序与其他应用程序相比常常显得非常朴素。然而,通过改变Swing Look and Feel(LAF)可以很容易地使你的Java程序生动起来。

LAF系统是Swing的强大特性之一,它使得Java应用程序能够像原生程序一样被装饰起来。。通过改变程序的外观,你能够人们对你的程序的看法。



Java的Swing库缺省使用Metal LAF,但所有版本的Swing都带有包含了Motif LAF的ui.jar。另外,Windows版本的Swing包含Windows LAF,OS X版本的则包含Mac LAF。

try {

 UIManager.setLookAndFeel("javax.swing.plaf.motif.MotifLookAndFeel");

//UIManager.setLookAndFeel("javax.swing.plaf.windows.WindowsLookAndFeel");

//UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");

//UIManager.setLookAndFeel("com.apple.mrj.swing.MacLookAndFeel");

} catch(ClassNotFoundException cnfe) {

    cnfe.printStackTrace( );

} catch(InstantiationException ie) {

    ie.printStackTrace( );

} catch(IllegalAccessException iae) {

    iae.printStackTrace( );

} catch(UnsupportedLookAndFeelException ulafe) {

    ulafe.printStackTrace( );

}

// 'frame' 是最高层的组件

SwingUtilities.updateComponentTreeUI(frame);

在try/catch块中,当UIManager被更新时,已存在的组件不会被更新。这些组件的更新要通过调用SwingUtilities的方法updateComponentTreeUI(java.awt.Component)。将最高层次的图形用户界面(GUI)组件传递给这个方法,所有的外观风格都会被更新。

Metal LAF比其他的外观更强大一些,因为它是可主题化的。改变背景颜色只是Metal LAF广泛的可主题化属性之一,UIManager可为单个特定组件或整个平台设置用户订制的主题。例如。你可以在任意LAF中像这样指定一个组件的背景颜色:

UIManager.put("Tree.background",Color.yellow);

无论如何,Metal LAF允许你像这样用一个BackgroundTheme类修改整个Swing外观的背景:

package com.generationjava.swing; importjava.awt.Color; import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.metal.DefaultMetalTheme; public class BackgroundTheme extends DefaultMetalTheme { private final ColorUIResource resource; public BackgroundTheme(Color color) { this.resource = new ColorUIResource(color); } public ColorUIResource getSecondary3( ) { return this.resource; } }

BackgroundTheme类可以像下面这样使用:

import javax.swing.UnsupportedLookAndFeelException; import javax.swing.UIManager; import javax.swing.plaf.metal.MetalLookAndFeel; .... MetalLookAndFeel.setCurrentTheme(new BackgroundTheme(Color.yellow ) ); try { UIManager.setLookAndFeel( new MetalLookAndFeel( ) ); } catch(ClassNotFoundException cnfe) { cnfe.printStackTrace( ); } catch(InstantiationException ie) { ie.printStackTrace( ); } catch(IllegalAccessException iae) { iae.printStackTrace( ); } catch(UnsupportedLookAndFeelException ulafe) { ulafe.printStackTrace( ); }

注意:一旦MetalLookAndFeel被更改,要用setLookAndFeel方法重新装载它。

 
 

你可能感兴趣的:(java,apple,windows,swing,IE)