hexJspinner的一些提示? 我的方法是正确的

我想让一个JSpinner将hex值从0x0000000旋转到0xffffffff。 尝试扩展abstractspinner模型但失败了。 我的方法是否正确,是否有任何其他解决方案。一些帮助将非常有用

这是一种可能对您有所帮助的方法

import java.awt.BorderLayout; import java.text.ParseException; import javax.swing.JFormattedTextField; import javax.swing.JFrame; import javax.swing.JSpinner; import javax.swing.SpinnerNumberModel; import javax.swing.JFormattedTextField.AbstractFormatter; import javax.swing.text.DefaultFormatter; import javax.swing.text.DefaultFormatterFactory; public class HexSpinnerTest { public static void main(String[] args) { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JSpinner sp = new JSpinner(new SpinnerNumberModel(0,0,10000,1)); JSpinner.DefaultEditor editor = (JSpinner.DefaultEditor)sp.getEditor(); JFormattedTextField tf = editor.getTextField(); tf.setFormatterFactory(new MyFormatterFactory()); f.getContentPane().add(sp, BorderLayout.NORTH); f.setSize(200,200); f.setVisible(true); } private static class MyFormatterFactory extends DefaultFormatterFactory { public AbstractFormatter getDefaultFormatter() { return new HexFormatter(); } } private static class HexFormatter extends DefaultFormatter { public Object stringToValue(String text) throws ParseException { try { return Long.valueOf(text, 16); } catch (NumberFormatException nfe) { throw new ParseException(text,0); } } public String valueToString(Object value) throws ParseException { return Integer.toHexString( ((Integer)value).intValue()).toUpperCase(); } } } 

我已经完成了0到10000,它们正在转换为HEX。