两种很好玩的Look And Feel

    技术2022-05-11  83

    给大家介绍两种很好玩的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( "<html><font color='red'>暗流</font></html>" );    private JToggleButton jtb1 = new JToggleButton( "<html><font color='green'>暗流</font></html>" );    private JToggleButton jtb2 = new JToggleButton( "<html><font color='blue'>暗流</font></html>" );    private JToggleButton jtb3 = new JToggleButton( "<html><font color='yellow'>暗流</font></html>" );*/    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上找的到。

     


    最新回复(0)