两种很好玩的Look And Feel

给大家介绍两种很好玩的Look And Feel:

    NapkinLookAndFeelLiquidLookAndFeel.

效果图分别如下

NapkinLookAndFeel

LiquidLookAndFeel

 

测试代码如下:

DemoGui.java

import  java.awt.BorderLayout;
import  java.io.UnsupportedEncodingException;

import  javax.swing.JButton;
import  javax.swing.JCheckBox;
import  javax.swing.JComboBox;
import  javax.swing.JFrame;
import  javax.swing.JMenu;
import  javax.swing.JMenuBar;
import  javax.swing.JMenuItem;
import  javax.swing.JPanel;
import  javax.swing.JRootPane;
import  javax.swing.JToggleButton;
import  javax.swing.UIManager;
import  javax.swing.UnsupportedLookAndFeelException;

import  net.sourceforge.napkinlaf.NapkinLookAndFeel;

public   class  DemoGui  extends  JFrame  {
    
private JPanel pane = new JPanel( new BorderLayout() );
    
private JPanel panel1 = new JPanel();
    
private JPanel panel2 = new JPanel();
    
private JButton button;
    
private JComboBox combox = new JComboBox();
    
private JCheckBox jcb = new JCheckBox();
    
private JMenuBar menuBar = new JMenuBar();
    
private JMenu menu = new JMenu( "File" );
    
private JMenuItem mi1 = new JMenuItem( "拷贝" );
    
private JMenuItem mi2 = new JMenuItem( "Cut" );
    
private JMenuItem mi3 = new JMenuItem( "Paste" );
    
private JToggleButton jtb = new JToggleButton( "Button1" );
    
private JToggleButton jtb1 = new JToggleButton( "Button2" );
    
private JToggleButton jtb2 = new JToggleButton( "Button3" );
    
private JToggleButton jtb3 = new JToggleButton( "暗流" );
    
    
/*private JToggleButton jtb = new JToggleButton( "暗流" );
    private JToggleButton jtb1 = new JToggleButton( "暗流" );
    private JToggleButton jtb2 = new JToggleButton( "暗流" );
    private JToggleButton jtb3 = new JToggleButton( "暗流" );
*/


    
static {
        
        
try {
            UIManager.setLookAndFeel( 
"com.birosoft.liquid.LiquidLookAndFeel" );
            
//UIManager.setLookAndFeel( new NapkinLookAndFeel() );
        }
 catch (UnsupportedLookAndFeelException e1) {
            
// TODO Auto-generated catch block
            e1.printStackTrace();
        }
 catch (ClassNotFoundException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
 catch (InstantiationException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
 catch (IllegalAccessException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    
public DemoGui() {
        
try {
            button 
= new JButton( new String( "Button".getBytes( "ISO-8859-1" )) );
        }
 catch (UnsupportedEncodingException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

        mi1.setMnemonic( 
'd' );
        menu.add( mi1 );
        menu.add( mi2 );
        menu.add( mi3 );
        menuBar.add( menu );
        menuBar.add( jtb1 );
        menuBar.add( jtb2 );
        menuBar.add( jtb3 );
        panel1.add( button );
        panel1.add( jcb );
        panel1.add( combox );
        panel1.add( jtb );
        pane.add( panel1, BorderLayout.PAGE_START );
        pane.add( panel2, BorderLayout.PAGE_END );
        
        
this.setJMenuBar( menuBar );
        
this.setContentPane( pane );
        
        
//this.setUndecorated( true );
        
//this.getRootPane().setWindowDecorationStyle( JRootPane.FRAME );
        
        
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        
this.setBounds( 300300600400 );
        
this.setVisible( true );
        
        
    }

    
public static void main( String[] args ) {
        
new DemoGui();
    }

}

大家看到NapkinLookAndFeel那个图里面有乱码,那是因为NapkinLookAndFeel不支持中文,比较遗憾,我猜想很可能是他使用的字体不支持中文。不过有一种很恶心的方式可以让他支持中文:那就是在所有使用中文的地方都采用html,比如:
 
Private JButton button  =   new  JButton( “ < html >< font color = ’red’ > 暗流 font > html > ” );
不过这样button的字体就不是Napkin的风格了,大家可以试下。
 
还有代码中有这样两行:
 
this .setUndecorated(  true  );
this .getRootPane().setWindowDecorationStyle( JRootPane.FRAME );
这两行的作用是:不使用默认的decoration,而使用你使用的LookAndFeel类提供的Decoration, 不过不是所有的LookAndFeel都提供decoration, 比如NapkinLookAndFeel就不提供,而LiquidLookAndFeel里面就提供,大家可以把这两行取消注释试一下。
还有一点提醒大家注意,我的测试代码里把
UIManager.setLookAndFeel(  " com.birosoft.liquid.LiquidLookAndFeel "  );
// UIManager.setLookAndFeel( new NapkinLookAndFeel() );
放在static初始化块里面了,这不是必须的,但是你必须保证把这段代码放在你生成所有的Component/Jcomponent之前,否则LookAndFeel不能生效。
参考资料:
Napkin和Liquid都可以在sourceforge上找的到。

 

你可能感兴趣的:(Java)