java Swing换皮肤设置对话框样式



java Swing换皮肤设置对话框样式。实例代码介绍。java是可以跨平台的语言,其GUI中默认的显示样式在windows中并不是很好看。但是也能给它换上漂亮的新衣服(皮肤样式)。最简单的就是切换成我们习惯的windows 风格。能随你的系统主题改变而改变,要使用到java的UIManager:Swing允许选择程序的图形界面风格常用的有java风格,windows风格等,默认情况下是选用了java风格。

先示例一下使用swing系统自带的皮肤:

Java代码

try{ javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); }catch(Exception e){ e.printStackTrace(); }

在这里写了一个示例程序–登陆窗口,在使用皮肤管理之前的效果如下:

Java界面开发学习笔记【三】 使用Swing皮肤机制

切换成windows皮肤后的效果图:

Java界面开发学习笔记【三】 使用Swing皮肤机制

利用Swing的LookAndFeel也可以实现时下流行的换肤功能。

还是先看一张效果图:


Java界面开发学习笔记【三】 使用Swing皮肤机制

mac主题元素。

 当然网上还有很多皮肤包可以自己去寻找下载,

 但是这样写在主线程中,有个问题就是启动了就不能切换皮肤,我们怎样才能做到像其他软件一样一个按钮或快捷键中切换皮肤呢,

可以在事件中使用如下代码:

UIManager.setLookAndFeel(look);
SwingUtilities.updateComponentTreeUI(this);
pack();

示列代码(完整)

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class JFrameWithButtons extends JFrame implements ActionListener
{
private JButton windLook=new JButton(“windows”,new ImageIcon(“Icon/1.jpg”));//
private JButton unixLook=new JButton(“Unix”);//
private JButton javaLook=new JButton(“Java”);
private JLabel label=new JLabel(“welcome to swing”);
private class WindowClosing extends WindowAdapter
{
 public void windowClosing(WindowEvent we)
 {
  System.exit(0); 
 
}
public JFrameWithButtons()
{
 super(“窗口外观”);
 Container content=getContentPane();
 content.setLayout(new FlowLayout());
 content.add(label);
 content.add(windLook);
 windLook.addActionListener(this);
 content.add(unixLook);
 unixLook.addActionListener(this);
 content.add(javaLook);
 javaLook.addActionListener(this);
 
 windLook.setToolTipText(“Windows 窗口”);//增加按钮提示
 unixLook.setToolTipText(“unix 窗口”);
 javaLook.setToolTipText(“java 窗口”);
 
 addWindowListener(new WindowClosing());
 validate();
 pack();
 setVisible(true);
}
public void actionPerformed(ActionEvent ae)
{
 String look=”javax.swing.plaf.metal.MetalLookAndFeel”;
 if(ae.getSource()==javaLook)
  look=”javax.swing.plaf.metal.MetalLookAndFeel”;
 else if(ae.getSource()==windLook)
  look=”com.sun.java.swing.plaf.windows.WindowsLookAndFeel”;
 else if(ae.getSource()==unixLook)
  look=”com.sun.java.swing.plaf.motif.MotifLookAndFeel”;
 try
 {
  UIManager.setLookAndFeel(look);
  SwingUtilities.updateComponentTreeUI(this);
  pack(); 
 }
 catch(Exception e)
 {
  System.out.println(“Exception:”+e); 
 }
}
public static void main(String[] args)
{
 JFrameWithButtons j=new JFrameWithButtons();
}
}