浅谈Swing中的Look&Feel

开发 后端
本文介绍Swing中的Look&Feel,以及介绍官方源码写的在main方法中的一段核心代码。

今天用Swing 做了一个模仿QQ2009的登录界面,用到了开源的Look&Feel (Substance),在使用的过程中遇到了一些问题,也学到了一些技巧。Substance (https://substance.dev.java.net)有很多的外观可以选择,而且都很漂亮,还提供了强大的API供开发者使用。Substance 现在已经发展到5.2RC 版了,一开始我使用的是5.1版,但是在使用的过程中发现了一些bug,当我使用Substance中提供的水印功能时,出现了许多的异常,这个bug在 5.0的时候是没有的,后来我又下载了***的5.2RC版,这个问题在5.2版中已经解决了。

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

对于Swing 的老手来说,这个是小菜一碟,但是对于Swing新手来说就比较困难了,因为他们看到的使用look&feel的许多教程都是像这样的:

  1. UIManager.setLookAndFeel( new  SubstanceOfficeBlue2007LookAndFeel());  

或者这样:

  1. try  {  
  2. UIManager.setLookAndFeel( " org.jvnet.substance.skin.SubstanceRavenGraphiteLookAndFeel " );  
  3. catch  (Exception e) {  
  4. System.out.println( " Substance Raven Graphite failed to initialize " );  
  5. }  

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

  1. JFrame.setDefaultLookAndFeelDecorated( true );  

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

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

以下就是我参考官方源码写的在main方法中的一段核心代码

  1. JFrame.setDefaultLookAndFeelDecorated(true);  
  2. JDialog.setDefaultLookAndFeelDecorated(true);  
  3. try  {  
  4. SubstanceImageWatermark watermark  =   new  SubstanceImageWatermark
    (LoginFrame. class .getResourceAsStream( " /demo/001.jpg " ));  
  5. watermark.setKind(ImageWatermarkKind.SCREEN_CENTER_SCALE);  
  6. SubstanceSkin skin  =   new  OfficeBlue2007Skin().withWatermark(watermark);
  7. //初始化有水印的皮肤  
  8. UIManager.setLookAndFeel( new  SubstanceOfficeBlue2007LookAndFeel());  
  9. SubstanceLookAndFeel.setSkin(skin);  //设置皮肤  
  10. }
  11. catch  (UnsupportedLookAndFeelException ex) {  
  12. Logger.getLogger(LoginFrame. class .getName()).log(Level.SEVERE,  null , ex);  

【编辑推荐】

  1. 概述Swing大多数控件
  2. GUI程序与Swing中的线程
  3. 浅析Swing.SWT和AWT的区别
  4. AWT和Swing的区别
  5. 浅谈Swing中提供了JOptionPane
责任编辑:佚名 来源: 电子工业出版社
相关推荐

2009-07-17 09:44:28

Look And Fe布局管理器SWT和Swing

2009-07-15 10:37:28

Swing外观

2009-07-15 09:59:11

Metal观感Swing

2009-07-17 16:49:18

lookandfeelSwing

2009-07-16 10:26:49

渲染器接口Swing

2009-07-16 16:01:55

EventQueue

2009-07-14 18:28:58

Swing入门

2009-07-15 14:29:24

构造JListSwing

2009-07-15 13:06:38

Swing组件

2009-07-16 12:58:50

Swing控件

2009-07-17 12:44:01

NetBeans开发S

2009-07-10 17:20:38

Swing构件AWT构件

2009-07-10 11:07:18

Swing和SWT

2009-07-15 16:29:41

Swing绘画

2009-07-10 13:09:53

.Net与Java S

2009-07-16 16:23:59

Swing线程

2009-07-14 14:50:00

JOptionPane

2009-07-14 11:08:42

WebRendererSwing应用程序

2009-07-17 15:34:37

Java Swing连接数据库

2009-07-10 11:31:45

Swing支持透明和不规则窗口
点赞
收藏

51CTO技术栈公众号