JSpinner 浮点数输入可能吗?如何?

Is a JSpinner float input possible?how?

是否可以让 JSpinner 处理浮点数?我有像 10E-20 这样的浮点数,所以我不能使用 Doubles,它必须是浮点数...但是没有 class 处理浮点数的 SpinnerNumberModel ...

首先我不太明白为什么你不能使用双打,但是没关系。

SpinnerNumberModel 能够处理浮点数,但你必须将它们作为 Float 对象来处理。有 this 构造函数,它接受 NumberComparable 对象。

但请记住,float 无法表示那么小的数字。对于如此高的精度,您应该使用 BigDecimal class,它也是 Number 的子 class。(Javadoc BigDecimal)

以下是 Java 的 NumberIntegerDoubleFloat 的工作方式。

java.lang.Numberjava.lang.Integerjava.lang.Double 以及 java.lang.Float、....

的超类型

SpinnerNumberModelclass有如下构造函数

public SpinnerNumberModel(Number value,
                  Comparable minimum,
                  Comparable maximum,
                  Number stepSize)

我完全看不出为什么我们不能提供 Float 而不是 Number,因为 FloatNumber 的子类型。浮点数是引用类型,而不是原始浮点数。

Float value = new Float(50.28817271727);
Float step = new Float(5.29182);
SpinnerNumberModel model = new SpinnerNumberModel(value, null, null, step);