这真令人困惑。我的应用程序中有一堆JSpinner
个组件,它们都运行正常。我将他们的模型设置为一系列整数值。他们被声明如下:
spinner1 = new javax.swing.JSpinner();
spinner1.setModel(new javax.swing.SpinnerNumberModel(10, 0, 10, 1));
当我在代码中需要它们的值时,我会调用getValue()
来返回一个对象并将其转换为整数,如下所示:
int importantVal = (Integer)spinner1.getValue();
这一直很好。出于某种原因,我创建了一个新的JSpinner,与SpinnerNumberModel完全相同,但是我得到了错误:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException:
java.lang.Float cannot be cast to java.lang.Integer
由于某种原因,它给了我一个漂浮物。我验证了模型是一样的,我尝试将一个工作的JSpinner复制并粘贴到这个新角色中并匹配名称,但我仍然遇到同样的问题。出于好奇,我尝试改变我有这个错误的行,把它作为Float转换,然后我得到错误的反向:它返回一个Integer,现在我试图把它作为一个浮点数。
为什么它会像那样翻转,它怎么会返回浮动?我甚至尝试使用new SpinnerNumberModel(new Integer(10), new Integer(0), new Integer(10), new Integer(1))
设置模型,但自然不会改变任何东西......
答案 0 :(得分:1)
正如人们指出的那样,我没有足够的帖子来确定问题。我如何宣布我的JSpinner没有错,这就是他们通常工作的原因。这个不守规矩的应用程序中的其他地方的错误导致了这个问题:
我有一个函数,它意外地用浮点数设置JSpinner的值,这就是它返回浮点数的原因。我没有意识到这一点,但是一个SpinnerNumberModel的值/ min / max /步长被声明为int,可以给出一个浮点值。并且它将使最小值/最大值/步长保持为整数但值为浮点数。
糟糕