Swing 皮肤包

http://javootoo.l2fprod.com/index.html  该网站上有收费和开源的皮肤包。

加载皮肤包的代码在这里简单说下,加入JAR包,在窗体加载代码前加入以下代码,窗体最好以线程启动。
  protected   void  startup() {
        
try  {
            UIManager.setLookAndFeel(
new  NapkinLookAndFeel());
            ///每个皮肤包都有一个****LookAndFeel类,查下文档或看下JAR都能找到,在这里改下就可以了
        } 
catch  (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(TestSkin1View.
class .getName()).log(Level.SEVERE,  null , ex);
        }
        show(
new  TestSkin1View( this ));
    }
我的环境是NetBean6.8

代码就不用多说了,来看下效果。substance有BUG,它不是完全开源的,不过它的皮肤包很多

Napkin Look & Feel



Liquid look & feel




idw-gpl



JTattoo


com.jtattoo.plaf.smart.SmartLookAndFeel

com.jtattoo.plaf.bernstein.BernsteinLookAndFeel


Squareness Look and Feel


net.beeger.squareness.SquarenessLookAndFeel

第一个问题:如何完整的使用Look&Feel? 

大家可能会问了,什么叫着完整的使用Look&Feel?这里先不急着说明,先让大家看一副截图;



大家看看上面幅图是否已经用了Look&Feel?  答案是正确的,但是并不完整,因为他的标题栏还没有改变,完整的使用Look&Feel后的截图如下:



是不是觉得很不一样了呢?对于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  "  );
    }


或者说是我自己太菜了吧。总之我在认真学习Swing的外观使用之前我是不知道该如何使标题栏也改变的。
要改变标题栏其实只要一句话就够了,就是在main方法中添加这么一句:

JFrame.setDefaultLookAndFeelDecorated(  true  );

如果想要让JDialog也改变的话,还要再加上: JDilog.setDefaultLookAndFeelDecorated(true);

下面是最终完成的界面,使用的是Substance中 OfficeBlue2007LookAndFeel 



第二个问题,如何给应用程序添加水印或者说是背景? 

官方的文档说的很少,也没有具体的使用例子说明,后来下载了Substance的源码来看才发现该如何使用。

以下就是我参考官方源码写的在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);  //设置皮肤
           
        } 
  catch   (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(LoginFrame.
  class  .getName()).log(Level.SEVERE,   null  , ex);
        }


上面的代码中有一句代码的位置是不能变的,那就是 SubstanceLookAndFeel.setSkin(skin); 。
它必须要在 UIManager.setLookAndFeel( new  SubstanceOfficeBlue2007LookAndFeel()); 这句的下面。
否则你看不到水印的效果。下图是有水印和没水印的对比图(左边的是有水印的,右边的是没水印的):

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值