java LookAndFeel 美化 Substance使用


改變外觀,似乎是一個很麻煩的事情,幸運的是在swing里,我們只需要簡單的一行代碼就可以改變
UIManager.setLookAndFeel(new LookAndFeel());
比如:
UIManager.setLookAndFeel(new QuaquaLookAndFeel());
我們還可以通過
UIManager.setLookAndFeel(String s);
來改變外觀,其中,s是表示該外觀的路徑,比如
UIManager.setLookAndFeel(
"org.fife.plaf.OfficeXP.OfficeXPLookAndFeel");


另外,如果該Look And Feel類對窗口的邊框還有修飾的話,還可以通過
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
這樣一來,窗口就會采用該外觀特制的邊框.

最出名的當屬Substance。官網:http://insubstantial.github.io/insubstantial/substance/

使用,將Substance.jar引入到lib中,然后在main中:

 try {
            UIManager.setLookAndFeel(new SubstanceLookAndFeel());
            JFrame.setDefaultLookAndFeelDecorated(true);
            JDialog.setDefaultLookAndFeelDecorated(true);
            SubstanceLookAndFeel.setCurrentTheme(new SubstanceTerracottaTheme());
//          SubstanceLookAndFeel.setSkin(new EmeraldDuskSkin());
//          SubstanceLookAndFeel.setCurrentButtonShaper(new ClassicButtonShaper());
//          SubstanceLookAndFeel.setCurrentWatermark(new SubstanceBubblesWatermark());
//          SubstanceLookAndFeel.setCurrentBorderPainter(new StandardBorderPainter());
//            SubstanceLookAndFeel.setCurrentGradientPainter(new StandardGradientPainter());
//            SubstanceLookAndFeel.setCurrentTitlePainter(new FlatTitePainter());
        } catch (Exception e) {
            System.err.println("Something went wrong!");
        }
public static void main(String[] args)
    {
        // 裝載可選擇的主題
        try {
            //設置外觀
            UIManager.setLookAndFeel(new SubstanceBusinessBlackSteelLookAndFeel());
            JFrame.setDefaultLookAndFeelDecorated(true);
            //設置主題 
            SubstanceLookAndFeel.setCurrentTheme(new SubstanceEbonyTheme());
            //設置按鈕外觀
            SubstanceLookAndFeel.setCurrentButtonShaper(new ClassicButtonShaper());
            //設置水印
            SubstanceLookAndFeel.setCurrentWatermark(new SubstanceBinaryWatermark());
            //設置邊框
            SubstanceLookAndFeel.setCurrentBorderPainter(new StandardBorderPainter());
            //設置漸變渲染
            SubstanceLookAndFeel.setCurrentGradientPainter(new StandardGradientPainter());
            //設置標題
            SubstanceLookAndFeel.setCurrentTitlePainter(new FlatTitlePainter());
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

 

這個地方主要介紹一下關於使用substance.jar包裝程序時對界面效果的幾個方面的設置,主要讓
主題,皮膚,按鈕類型,水印,邊框渲染,漸變渲染與標題欄渲染.

他們都可以通過 SubstanceLookAndFeel類的靜態方法 setCurrentXXX(XXX)來完成設置,其中對皮膚的設置稍有不同,使用靜態方法setSkin(),沒有Current這個單詞,這主要是由於一個皮膚對象中已經包含了所有其他的如主題,水印,按鈕類型的設置.另外注意,所以這些類型並沒有作為一個類的字段來出現,而且他們各處單獨是一個類,所以都需要通過new來創建他們的實例.其中除了皮膚,按鈕,標題欄,其他的對象都是以Substance+名稱+類型 來命名的.(主題是皮膚的一部分

共有22種皮膚,69種主題。

1. 下載下來substance.jar包后,解壓JAR文件,可以看到在“org/jvnet/substance/skin”下有下面這些皮膚(以LookAndFeel.class結尾的文件)。

SubstanceAutumnLookAndFeel.class

SubstanceBusinessBlackSteelLookAndFeel.class

SubstanceBusinessBlueSteelLookAndFeel.class

SubstanceBusinessLookAndFeel.class

 

 要使用上述皮膚很簡單,只要在main函數中調用下面代碼即可:

//主要設置皮膚、主題還有按鈕、水印、選項卡、滑動條以及水印等

//UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceBusinessLookAndFeel");

//UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceOfficeSilver2007LookAndFeel");

//UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceSaharaLookAndFeel");

//UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceOfficeBlue2007LookAndFeel");

UIManager.setLookAndFeel("org.jvnet.substance.skin.SubstanceBusinessBlackSteelLookAndFeel");

 

2. org/jvnet/substance/theme 下有可用主題:

SubstanceAquaTheme.class

SubstanceBarbyPinkTheme.class

SubstanceBlendBiTheme.class

............

疑問:

 UIManager.setLookAndFeel(new SubstanceLookAndFeel());
這里的SubstanceLookAndFeel不是一個skin類,我在skin下找不到這個類


 

參考:http://hi.baidu.com/jxqlovejava/item/fe3116cd169593d0ee183b37

http://hitzsf.blog.163.com/blog/static/34668206201172110510740/

http://blog.csdn.net/zhenshiyiqie/article/details/8425923

http://www.iteye.com/topic/394314


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM