swing皮肤substance的应用

swing皮肤确实是个问题,要自己做的话是非常麻烦的事情

substance是swing皮肤的理想选择,应用简单,皮肤效果众多,简单说明下用法

下载substance的jar文件,官网已经没有可以下载的了(可能是现在用swing的越来越少了吧)

下载地址:http://download.csdn.net/detail/shilonggang000/7196955

啥都不说了,先整个例子跑起来


import java.awt.Frame;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

import org.jvnet.substance.SubstanceLookAndFeel;
import org.jvnet.substance.skin.OfficeBlue2007Skin;

import com.sunshine.sunsdk.swing.FStartWindow;

public class LoginUi extends JFrame {
  JFrame jframe;

 public void showLogin() {
  JPanel panel;
  JLabel biaoti, nameLable, passwordLable;
  JTextField userName;
  JPasswordField password;
  JButton loginButton, cancelButton;

  panel = new JPanel();
  panel.setLayout(null);
  panel.setBounds(0, 0, 490, 360);

  biaoti = new JLabel("登录");
  biaoti.setBounds(panel.getSize().width / 2 - 40, 0, 300, 40);

  nameLable = new JLabel("用户名");
  nameLable.setBounds(100, 100, 75, 30);
  passwordLable = new JLabel("密码");
  passwordLable.setBounds(100, 140, 75, 30);

  userName = new JTextField();
  userName.setBounds(185, 100, 200, 25);
  password = new JPasswordField();
  password.setBounds(185, 140, 200, 25);

  loginButton = new JButton();
  loginButton.setText("登录");
  loginButton.setBounds(160, 251, 80, 30);

  cancelButton = new JButton();
  cancelButton.setText("取消");
  cancelButton.setBounds(280, 251, 80, 30);

  panel.add(biaoti);
  panel.add(nameLable);
  panel.add(userName);
  panel.add(passwordLable);
  panel.add(password);
  panel.add(loginButton);
  panel.add(cancelButton);

  panel.setOpaque(false);

  jframe = new JFrame();
  jframe.setBounds(500, 200, 490, 360);
  jframe.add(panel);
  jframe.setResizable(false);
  jframe.setVisible(true);

 }

 public static void main(String args[]) {
  JFrame.setDefaultLookAndFeelDecorated(true);
  JDialog.setDefaultLookAndFeelDecorated(true);
  SwingUtilities.invokeLater(new Runnable() {
        public void run() {
         try{
          SubstanceLookAndFeel.setSkin(new OfficeBlue2007Skin());
          LoginUi test = new LoginUi();
          test.showLogin();
         }catch(Exception e){
          e.printStackTrace();
         }
        }
      }); 
 }
}
出来的效果如图

说明:substance中 SubstanceLookAndFeel的setSkin方法必须是AWT 事件指派线程,即在SwingUtilities.invokeLater方法中起线程调用,否则会抛出异常"This method must be called on the Event Dispatch Thread";

substance中此处源码:

private static boolean setSkin(SubstanceSkin newSkin,
   boolean toUpdateWindows) {
  if (!SwingUtilities.isEventDispatchThread()) {
   throw new IllegalStateException(
     "This method must be called on the Event Dispatch Thread");
  }

......

              SubstanceLookAndFeel.setSkin(new OfficeBlue2007Skin());//此句设置了皮肤;

              OfficeBlue2007Skin()为皮肤类可以替换下边的类改变风格

org.pushingpixels.substance.api.skin.AutumnSkin,
org.pushingpixels.substance.api.skin.BusinessSkin,
org.pushingpixels.substance.api.skin.BusinessBlackSteelSkin,
org.pushingpixels.substance.api.skin.BusinessBlueSteelSkin,
org.pushingpixels.substance.api.skin.ChallengerDeepSkin,
org.pushingpixels.substance.api.skin.CremeSkin,
org.pushingpixels.substance.api.skin.CremeCoffeeSkin,
org.pushingpixels.substance.api.skin.DustSkin,
org.pushingpixels.substance.api.skin.DustCoffeeSkin,
org.pushingpixels.substance.api.skin.EmeraldDuskSkin,
org.pushingpixels.substance.api.skin.GeminiSkin,
org.pushingpixels.substance.api.skin.GraphiteSkin,
org.pushingpixels.substance.api.skin.GraphiteAquaSkin,
org.pushingpixels.substance.api.skin.GraphiteGlassSkin,
org.pushingpixels.substance.api.skin.MagellanSkin,
org.pushingpixels.substance.api.skin.MarinerSkin,
org.pushingpixels.substance.api.skin.MistAquaSkin,
org.pushingpixels.substance.api.skin.MistSilverSkin,
org.pushingpixels.substance.api.skin.ModerateSkin,
org.pushingpixels.substance.api.skin.NebulaSkin,
org.pushingpixels.substance.api.skin.NebulaBrickWallSkin,
org.pushingpixels.substance.api.skin.OfficeBlack2007Skin,
org.pushingpixels.substance.api.skin.OfficeBlue2007Skin,
org.pushingpixels.substance.api.skin.OfficeSilver2007Skin,
org.pushingpixels.substance.api.skin.RavenSkin,
org.pushingpixels.substance.api.skin.SaharaSkin
试试效果吧!

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值