截止到java 8,swing支持五种类型的LookAndFeel风格(不包括第三方提供的),当然第三方个人或组织可能也提供了其他类型的LookAndFeel风格,swing默认是一名成为Metal的风格,下面的程序展示了如何通过按钮在五种风格间进行切换。
<span style="font-size:14px;">import javax.swing.UIManager;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.SwingUtilities;
import java.awt.BorderLayout;
import javax.swing.JTextArea;
public class AllLookAndFeel
{
private JFrame jFrame = new JFrame("默认外观测试");
private JPanel jPanel = new JPanel();
private JButton jButton1 = new JButton("Metal");
private JButton jButton2 = new JButton("Nimbus");
private JButton jButton3 = new JButton("Motif");
private JButton jButton4 = new JButton("Windows");
private JButton jButton5 = new JButton("Windows Classic");
private JTextArea jTextArea = new JTextArea(6, 40);
class MyListener implements ActionListener
{
@Override
public void actionPerformed(ActionEvent actionEvent)
{
try
{
switch(actionEvent.getActionCommand())
{
case "Metal":
changeFlavor(1);
break;
case "Nimbus":
changeFlavor(2);
break;
case "Motif":
changeFlavor(3);
break;
case "Windows":
changeFlavor(4);
break;
case "Windows Classic":
changeFlavor(5);
break;
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
/*定义改变窗体风格的方法*/
public void changeFlavor(int i) throws Exception
{
switch(i)
{
case 1:
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
SwingUtilities.updateComponentTreeUI(jFrame);
jTextArea.setText("当前是Metal风格!");
break;
case 2:
UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
SwingUtilities.updateComponentTreeUI(jFrame);
jTextArea.setText("当前是Nimbus风格!");
break;
case 3:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
SwingUtilities.updateComponentTreeUI(jFrame);
jTextArea.setText("当前是Motif风格!");
break;
case 4:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(jFrame);
jTextArea.setText("当前是Windows风格!");
break;
case 5:
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel");
SwingUtilities.updateComponentTreeUI(jFrame);
jTextArea.setText("当前是WindowsClassic风格!");
break;
}
}
}
public void init()
{
jButton1.addActionListener(new MyListener());
jButton2.addActionListener(new MyListener());
jButton3.addActionListener(new MyListener());
jButton4.addActionListener(new MyListener());
jButton5.addActionListener(new MyListener());
jPanel.add(jButton1);
jPanel.add(jButton2);
jPanel.add(jButton3);
jPanel.add(jButton4);
jPanel.add(jButton5);
jFrame.add(jPanel, BorderLayout.SOUTH);
jFrame.add(jTextArea);
jFrame.pack();
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args)
{
new AllLookAndFeel().init();
}
}</span>
下面是各种风格的效果: