JSpinner返回错误的类型

时间:2015-10-09 01:23:12

标签: java swing classcastexception jspinner

这真令人困惑。我的应用程序中有一堆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))设置模型,但自然不会改变任何东西......

1 个答案:

答案 0 :(得分:1)

正如人们指出的那样,我没有足够的帖子来确定问题。我如何宣布我的JSpinner没有错,这就是他们通常工作的原因。这个不守规矩的应用程序中的其他地方的错误导致了这个问题:

我有一个函数,它意外地用浮点数设置JSpinner的值,这就是它返回浮点数的原因。我没有意识到这一点,但是一个SpinnerNumberModel的值/ min / max /步长被声明为int,可以给出一个浮点值。并且它将使最小值/最大值/步长保持为整数但值为浮点数。

糟糕