Java 关于hex-Jspinner的一些提示?我认为这是正确的方法

Java 关于hex-Jspinner的一些提示?我认为这是正确的方法,java,swing,jspinner,numberformatter,Java,Swing,Jspinner,Numberformatter,我不想让JSpinner将十六进制值从0x0000000旋转到0xFFFFFF。尝试扩展abstractspinner模型,但失败。我的方法正确吗?还有其他的解决方案吗?一些帮助真的很有用 import java.awt.BorderLayout; import java.text.ParseException; import javax.swing.JFormattedTextField; import javax.swing.JFrame; import javax.swing.J

我不想让JSpinner将十六进制值从0x0000000旋转到0xFFFFFF。尝试扩展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的转换,转换为十六进制。

您能展示一下您迄今为止的尝试吗?也许微调器不是从268435456个可能值中选择的最佳组件。顺便说一句-什么是需要7位(?)十六进制值的?它是用来配置高速电机的计数限制的,它是一个4字节的值。请考虑使用
Long.valueOf(…)
Long.tohextstring(…)
而不是整数变量。@hovercraftfullofels,gr8 dude,谢谢你,我现在正在编辑