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(); }
在这里写了一个示例程序–登陆窗口,在使用皮肤管理之前的效果如下:

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

利用Swing的LookAndFeel也可以实现时下流行的换肤功能。
还是先看一张效果图:

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();
}
}