package test.check; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.JComboBox; import javax.swing.JList; import javax.swing.SwingUtilities; import org.pushingpixels.substance.api.SubstanceLookAndFeel; import org.pushingpixels.substance.api.SubstanceSkin; import org.pushingpixels.substance.api.renderers.SubstanceDefaultComboBoxRenderer; import org.pushingpixels.substance.api.skin.SkinInfo; public class SubstanceSkinComboSelector extends JComboBox { public SubstanceSkinComboSelector() { // populate the combobox super(new ArrayList<SkinInfo>(SubstanceLookAndFeel.getAllSkins() .values()).toArray()); // set the current skin as the selected item SubstanceSkin currentSkin = SubstanceLookAndFeel.getCurrentSkin(); for (SkinInfo skinInfo : SubstanceLookAndFeel.getAllSkins().values()) { if (skinInfo.getDisplayName().compareTo( currentSkin.getDisplayName()) == 0) { this.setSelectedItem(skinInfo); break; } } // set custom renderer to show the skin display name this.setRenderer(new SubstanceDefaultComboBoxRenderer(this) { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { return super.getListCellRendererComponent(list, ((SkinInfo) value).getDisplayName(), index, isSelected, cellHasFocus); } }); // add an action listener to change skin based on user selection this.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { SubstanceLookAndFeel .setSkin(((SkinInfo) SubstanceSkinComboSelector.this .getSelectedItem()).getClassName()); } }); } }); } }