e791. 为JSpinner定制编辑器
This example replaces the default editor (a JFormattedTextField) in a spinner component with a custom editor. The custom editor is simply a panel that displays a color. The name of the color to display is stored in a SpinnerListModel.
// Create a color spinner
ColorSpinner spinner = new ColorSpinner(
new String[]{"red", "green", "blue"});
// Change the selected color
spinner.setValue("blue");
public 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) {
// Add the listener
spinner.addChangeListener(this);
// Set the preferred size
setPreferredSize(new Dimension(preferredWidth, preferredHeight));
// Display the current color
setColor((String)spinner.getValue());
}
// Handles changes to the value stored in the model
public void stateChanged(ChangeEvent evt) {
JSpinner spinner = (JSpinner)evt.getSource();
// Get the new value
String value = (String)spinner.getValue();
// Update the displayed color
setColor(value);
}
// Updates the displayed color to 'colorName' which must be one
// of the predefined colors in java.awt.Color.
public void setColor(String colorName) {
try {
// Find the field and value of colorName
Field field = Class.forName("java.awt.Color").getField(colorName);
Color color = (Color)field.get(null);
// Display the color
setBackground(color);
} catch (Exception e) {
}
}
}
| Related Examples |
浙公网安备 33010602011771号