Mega Code Archive

 
Categories / Java Tutorial / Swing
 

Customizing the Editor in a JSpinner Component

import java.awt.Color; import java.awt.Dimension; import java.lang.reflect.Field; import javax.swing.JPanel; import javax.swing.JSpinner; import javax.swing.SpinnerListModel; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class Main {   public static void main(String[] argv) throws Exception {     ColorSpinner spinner = new ColorSpinner(new String[] { "red", "green","blue" });    spinner.setValue("blue");   } } class ColorSpinner extends JSpinner {   public ColorSpinner(String[] colorNames) {     super();     setModel(new SpinnerListModel(colorNames));     setEditor(new Editor(this));   }   public class Editor extends JPanel implements ChangeListener {     int preferredWidth = 30;     int preferredHeight = 16;     Editor(JSpinner spinner) {       spinner.addChangeListener(this);       setPreferredSize(new Dimension(preferredWidth, preferredHeight));       setColor((String) spinner.getValue());     }     public void stateChanged(ChangeEvent evt) {       JSpinner spinner = (JSpinner) evt.getSource();       String value = (String) spinner.getValue();       setColor(value);     }     public void setColor(String colorName) {       try {         Field field = Class.forName("java.awt.Color").getField(colorName);         Color color = (Color) field.get(null);         setBackground(color);       } catch (Exception e) {       }     }   } }