淺談Swing中的Look&Feel
今天用Swing 做了一個模仿QQ2009的登錄界面,用到了開源的Look&Feel (Substance),在使用的過程中遇到了一些問題,也學(xué)到了一些技巧。Substance (https://substance.dev.java.net)有很多的外觀可以選擇,而且都很漂亮,還提供了強(qiáng)大的API供開發(fā)者使用。Substance 現(xiàn)在已經(jīng)發(fā)展到5.2RC 版了,一開始我使用的是5.1版,但是在使用的過程中發(fā)現(xiàn)了一些bug,當(dāng)我使用Substance中提供的水印功能時,出現(xiàn)了許多的異常,這個bug在 5.0的時候是沒有的,后來我又下載了***的5.2RC版,這個問題在5.2版中已經(jīng)解決了。
***個問題:如何完整的使用Look&Feel?
對于Swing 的老手來說,這個是小菜一碟,但是對于Swing新手來說就比較困難了,因為他們看到的使用look&feel的許多教程都是像這樣的:
- UIManager.setLookAndFeel( new SubstanceOfficeBlue2007LookAndFeel());
或者這樣:
- try {
- UIManager.setLookAndFeel( " org.jvnet.substance.skin.SubstanceRavenGraphiteLookAndFeel " );
- }
- catch (Exception e) {
- System.out.println( " Substance Raven Graphite failed to initialize " );
- }
或者說是我自己太菜了吧??傊以谡J(rèn)真學(xué)習(xí)Swing的外觀使用之前我是不知道該如何使標(biāo)題欄也改變的。
要改變標(biāo)題欄其實(shí)只要一句話就夠了,就是在main方法中添加這么一句:
- JFrame.setDefaultLookAndFeelDecorated( true );
第二個問題,如何給應(yīng)用程序添加水印或者說是背景?
官方的文檔說的很少,也沒有具體的使用例子說明,后來下載了Substance的源碼來看才發(fā)現(xiàn)該如何使用。
以下就是我參考官方源碼寫的在main方法中的一段核心代碼
- JFrame.setDefaultLookAndFeelDecorated(true);
- JDialog.setDefaultLookAndFeelDecorated(true);
- try {
- SubstanceImageWatermark watermark = new SubstanceImageWatermark
(LoginFrame. class .getResourceAsStream( " /demo/001.jpg " ));- watermark.setKind(ImageWatermarkKind.SCREEN_CENTER_SCALE);
- SubstanceSkin skin = new OfficeBlue2007Skin().withWatermark(watermark);
- //初始化有水印的皮膚
- UIManager.setLookAndFeel( new SubstanceOfficeBlue2007LookAndFeel());
- SubstanceLookAndFeel.setSkin(skin); //設(shè)置皮膚
- }
- catch (UnsupportedLookAndFeelException ex) {
- Logger.getLogger(LoginFrame. class .getName()).log(Level.SEVERE, null , ex);
- }
【編輯推薦】