Java Can';无法从JTable中的列中获取正确的值
我有一个名为“购物车”的JTable,用户可以在购买产品之前添加产品。该表中唯一可编辑的列是最后一列Quantity,它允许用户更改他们希望购买的产品数量。默认情况下,添加产品时,此值为1。当我使用这些默认值创建发票时,ORDERS DB表将成功更新。但是,如果我通过键入来更改quantity单元格中的金额,我会遇到一个不知道如何修复的异常。我试图从该列获取的整数值似乎是以字符串形式返回的,而不是整数 基本上我有库存,我在其中存储的产品数量。我从“I”行和最后一列“4”中表格的模型中得到该值 当程序在这个表中添加新行时,默认情况下fourht列是1,当我调用这个值时,我得到的是整数。然而,如果我在该列中键入其他值,那么我将不再返回int,而是返回StringJava Can';无法从JTable中的列中获取正确的值,java,swing,jtable,type-conversion,defaulttablemodel,Java,Swing,Jtable,Type Conversion,Defaulttablemodel,我有一个名为“购物车”的JTable,用户可以在购买产品之前添加产品。该表中唯一可编辑的列是最后一列Quantity,它允许用户更改他们希望购买的产品数量。默认情况下,添加产品时,此值为1。当我使用这些默认值创建发票时,ORDERS DB表将成功更新。但是,如果我通过键入来更改quantity单元格中的金额,我会遇到一个不知道如何修复的异常。我试图从该列获取的整数值似乎是以字符串形式返回的,而不是整数 基本上我有库存,我在其中存储的产品数量。我从“I”行和最后一列“4”中表格的模型中得到该值 当
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
通过检查变量类型,我找到了一个临时解决方法:
/** Check if Quantity field was updated **/
if (cartModel.getValueAt(i, 4).getClass().getName().equals("java.lang.Integer")) {
tempStock = (int)cartModel.getValueAt(i, 4);
} else {
tempStock = Integer.parseInt((String)cartModel.getValueAt(i, 4));
}
int tempStock=(int)cartModel.getValueAt(i,4)的形式返回int值代码>
尝试使用
Integer.parseInt(String)
而不是typecast,这样做有效吗?@simil也尝试过。不起作用,因为我得到了与异常完全相反的结果。也就是说,更新后的值将起作用,但deafualt值1将尝试解析整数而不是字符串。你知道java中是否有方法可以检测我得到的变量类型吗?@Andrew Thompson-url for SSCCE对我来说是错误的,(hmmmm与s'OracleSwing教程中的JComponents链接相同)我刚才测试过它&对我来说还可以。可能是一时的小故障。
/** Check if Quantity field was updated **/
if (cartModel.getValueAt(i, 4).getClass().getName().equals("java.lang.Integer")) {
tempStock = (int)cartModel.getValueAt(i, 4);
} else {
tempStock = Integer.parseInt((String)cartModel.getValueAt(i, 4));
}