java - 十六进制 Jspinner 的一些提示?方法正确吗

标签 java swing jspinner numberformatter

我想让 JSpinner 将十六进制值从 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,它们正在转换为十六进制。

关于java - 十六进制 Jspinner 的一些提示?方法正确吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9758469/

相关文章:

java - 导出快照无法加载

Java 线程等待锁定它已经锁定的对象

java - 如何在java中检查给定点是否位于二维多边形内部。(常用方法)

Java Swing布局,无法排列元素

java - Apache poi 创建错误的 Excel 文件

java jspinner 更改监听器触发器

JavaFX 如何使 GridPane 适合 ScrollPane 父级?

java - 如何停止 Java 结果 : 1 error? 为什么会发生这种情况?

java - 如何验证java中的JSpinner textField设置的最小值和最大值?

java - 如何撤消 JSpinner 上的更改?