为什么不能用addActionListener(new ActionListener() 。。)的方法,看前一篇文章http://www.cnblogs.com/youxin/archive/2013/06/16/3138225.html
皮肤:
public static String[] skins={"SubstanceAutumnLookAndFeel", "SubstanceBusinessBlackSteelLookAndFeel", "SubstanceBusinessBlueSteelLookAndFeel", "SubstanceChallengerDeepLookAndFeel", "SubstanceCremeCoffeeLookAndFeel", "SubstanceEmeraldDuskLookAndFeel", "SubstanceFieldOfWheatLookAndFeel", "SubstanceGreenMagicLookAndFeel", "SubstanceMagmaLookAndFeel", "SubstanceMangoLookAndFeel", "SubstanceMistAquaLookAndFeel", "SubstanceModerateLookAndFeel", "SubstanceNebulaBrickWallLookAndFeel", "SubstanceRavenGraphiteGlassLookAndFeel", "SubstanceSaharaLookAndFeel", };
生成Item项:
JMenuItem[] skinMenuItems=new JMenuItem[skins.length]; for( int i=0;i<skins.length;i++) { int type=i; skinMenuItems[i]=new JMenuItem(skins[i]); skinMenu.add(skinMenuItems[i]); skinMenuItems[i].addActionListener(new LAFListener("org.jvnet.substance.skin."+skins[i],this); }
public class LAFListener implements ActionListener { private String className; private Component com; public LAFListener(String className, Component com) { this.className = className; this.com = com; } public void actionPerformed(ActionEvent e) { try { Object obj = Class.forName(className).newInstance(); if (obj instanceof LookAndFeel) { UIManager.setLookAndFeel(className); } SwingUtilities.updateComponentTreeUI(com); } catch (ClassNotFoundException ex) { Logger.getLogger(LAFListener.class.getName()).log(Level.SEVERE, null, ex); } catch (InstantiationException ex) { Logger.getLogger(LAFListener.class.getName()).log(Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { Logger.getLogger(LAFListener.class.getName()).log(Level.SEVERE, null, ex); } catch (UnsupportedLookAndFeelException ex) { Logger.getLogger(LAFListener.class.getName()).log(Level.SEVERE, null, ex); } } }
参考:http://www.blogjava.net/ivin/archive/2007/12/29/170869.html