javax.swing.UIManager.setLookAndFeel 只能写在主方法里面,就不能实现实时切换主题了,有什么办法在不重启程序的情况下实现主题切换?

解决方案 »

  1.   

    public class SwingHelper {
        public static JMenu createLookAndFeelMenu(final JFrame frame) {
            JMenu lafMenu = new JMenu("Look And Feel");
            final LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels();
            for (final LookAndFeelInfo laf : lafs) {
                JMenuItem lafItem = new JMenuItem(laf.getName());
                lafItem.addActionListener(new ActionListener() {                @Override
                    public void actionPerformed(ActionEvent e) {
                        try {
                            UIManager.setLookAndFeel(laf.getClassName());
                            SwingUtilities.updateComponentTreeUI(frame.getRootPane());
                        } catch (Exception t) {
                        }
                    }
                });
                lafMenu.add(lafItem);
            }        return lafMenu;
        }
    }