Java 具有长值的JSpinner

Java 具有长值的JSpinner,java,long-integer,jspinner,Java,Long Integer,Jspinner,我需要一个可以处理long的JSpinner,但是JSpinner只处理double和int。我确实看到一个答案,它使用double来模拟long,但是我需要能够准确地表示long的每个值。这是一个64位的程序,所以double和int都不行 有没有可能让一个JSpinner使用BigInteger作为数据类型,或者我最好只使用一个JPanel来设计自己的JSpinner,其中包含一个JTextField和两个JButton,专门用于处理我的情况?现在,我倾向于后者。正如@Aru提到的,您可以使

我需要一个可以处理long的JSpinner,但是JSpinner只处理double和int。我确实看到一个答案,它使用double来模拟long,但是我需要能够准确地表示long的每个值。这是一个64位的程序,所以double和int都不行


有没有可能让一个JSpinner使用BigInteger作为数据类型,或者我最好只使用一个JPanel来设计自己的JSpinner,其中包含一个JTextField和两个JButton,专门用于处理我的情况?现在,我倾向于后者。

正如@Aru提到的,您可以使用
喷丝头numbermodel

Long val = Long.MAX_VALUE;//set your own value, I used to check if it works
Long min = Long.MIN_VALUE;
Long max = Long.MAX_VALUE;
Long step = 1L;

SpinnerNumberModel model = new SpinnerNumberModel(val, min, max, step);
JSpinner spinner = new JSpinner(model);

请注意,您必须将
Long
用作对象,而不是原语
Long

是否确实不支持
Long
?我在另一个主题中也看到了评论,但在文档中找不到任何提示。再看一下代码,似乎可以很好地处理每种数据类型:当涉及到Swing时,我是一个非常不在行的人。使用Oracle Java时,数字范围默认为int,单击max值时返回最小的负值。我甚至不知道如何使用其他原语作为数字类型。是的,我正要回答。如果使用原语long,将调用
SpinnerNumberModel(双值、双最小值、双最大值、双步长)
构造函数,因此它只接受双值。非常感谢!工作起来很有魅力。如果我决定发表这篇文章,我会提到你们两个!我遇到了另一个JSpinner问题。当我希望它使用长值时,它的工作方式与我所希望的一样。当达到极限时,它会进行翻转。我对byte尝试了相同的方法,但当它达到127时,它就停止了。我应该覆盖getNextvalue和getPreviousValue方法来进行总结,还是有更好的主意。我想要一个用于byte、short和int的滚动JSpinner。它只在使用适当的对象
byte
Integer
,。。。因为如果将
字节
的值增加到127,它将溢出到-128,但是如果使用
它不会溢出,并且达到最大值。我认为覆盖你提到的方法将是一个更干净的解决方案。该死的。。。。我以为我是按照你给我看的方式做的,但我用的是byte(基元),而不是byte(类)。当使用包装器类时,它与包装器一起工作。(包装器…环绕…巧合?)当使用原语时,它没有。再次感谢!