本文共 2305 字,大约阅读时间需要 7 分钟。
在JAVA的GUI开发中,Swing组件使用的是默认的皮肤,我们可以通过设置观感器来更改默认的皮肤。
如图所示,这就是JAVA默认观感器(XP系统)现实的效果。这一篇博客将通过示例代码为大家演示如何更改默认的观感器。
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JPasswordField;import javax.swing.JRadioButton;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.JToggleButton;import javax.swing.SwingUtilities;import javax.swing.UIManager;import javax.swing.UIManager.LookAndFeelInfo;/** * 观感器示例 * * @author jianggujin * */public class LookAndFeelDemo extends JFrame implements ActionListener{ public LookAndFeelDemo() { super("SwingDemo"); JMenuBar menuBar = new JMenuBar(); JMenu skin = new JMenu("皮肤"); // 获得所有已安装观感器 LookAndFeelInfo[] lookAndFeelInfos = UIManager.getInstalledLookAndFeels(); // 遍历观感器并添加菜单项 for (LookAndFeelInfo lookAndFeelInfo : lookAndFeelInfos) { JMenuItem item = new JMenuItem(lookAndFeelInfo.getName()); item.setActionCommand(lookAndFeelInfo.getClassName()); item.addActionListener(this); skin.add(item); } menuBar.add(skin); setJMenuBar(menuBar); JPanel root = new JPanel(); root.add(new JButton("我是JButton")); root.add(new JToggleButton("我是JToggleButton")); root.add(new JLabel("我是JLabel")); root.add(new JCheckBox("我是JCheckBox")); root.add(new JRadioButton("我是JRadioButton")); root.add(new JTextField("我是JTextField")); root.add(new JPasswordField("我是JPasswordField")); root.add(new JTextArea("我是JTextArea")); add(root); setSize(400, 300); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); setVisible(true); } public static void main(String[] args) { new LookAndFeelDemo(); } @Override public void actionPerformed(ActionEvent e) { JMenuItem item = (JMenuItem) e.getSource(); try { UIManager.setLookAndFeel(item.getActionCommand()); SwingUtilities.updateComponentTreeUI(this); } catch (Exception e2) { e2.printStackTrace(); } }}
运行效果: