public class T {
public static void main(String[] args) {
JSpinner spinner = new JSpinner(new SpinnerNumberModel(50, 0, 100, 1));
final JFormattedTextField.AbstractFormatter formatter = new JFormattedTextField.AbstractFormatter() {
public Object stringToValue(String text) throws ParseException {
if (text != null && text.startsWith("0x")) {
text = text.substring(2);
}
return new Integer(Integer.parseInt(text, 16));
}
public String valueToString(Object value) throws ParseException {
int v = ((Number)value).intValue();
return "0x" + Integer.toHexString(v).toUpperCase();
}
};
class HexNumberEditor extends JSpinner.DefaultEditor {
public HexNumberEditor(JSpinner spinner) {
super(spinner);
if (!(spinner.getModel() instanceof SpinnerNumberModel)) {
throw new IllegalArgumentException("model not a SpinnerNumberModel");
}
getTextField().setEditable(true);
getTextField().setFormatterFactory(new DefaultFormatterFactory(formatter));
}
}
spinner.setEditor(new HexNumberEditor(spinner));
JFrame f = new JFrame();
f.getContentPane().add(spinner, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}