Create a custom JSpinner for selecting colors in Java
Description
The following code shows how to create a custom JSpinner for selecting colors.
Example
/*ww w .j a v a 2 s . co m*/
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.lang.reflect.Field;
import javax.swing.JFrame;
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 {
JFrame frame = new JFrame("JSpinner Sample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ColorSpinner spinner = new ColorSpinner(new String[] { "red", "green","blue" });
spinner.setValue("blue");
frame.add(spinner, BorderLayout.SOUTH);
frame.setSize(200, 90);
frame.setVisible(true);
}
}
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) {
}
}
}
}
The code above generates the following result.
Home »
Java Tutorial »
Swing »
Java Tutorial »
Swing »