改變外觀,似乎是一個很麻煩的事情,幸運的是在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