我有一个名为“Cart”的 JTable,用户可以在其中添加产品,然后再购买。该表中唯一可编辑的列是名为 Quantity 的最后一列,它允许用户更改他们希望购买的产品数量。默认情况下,添加产品时此值为 1。当我使用这些默认值创建发票时,ORDERS 数据库表已成功更新。但是,如果我通过键入来更改数量单元格中的数量,我会得到一个我不知道如何修复的异常。看起来我试图从该列获取的整数值作为字符串返回,而不是整数。
基本上我有整数 tempStock 来存储产品数量。我从“i”行和最后一列“4”中的表的模型中获得该值。
int tempStock = (int)cartModel.getValueAt(i, 4);
当程序在此表中添加新行时,第四列默认为 1,当我调用该值时,我确实得到整数。但是,如果我在该列中输入其他值,那么我将不再返回 int,而是返回 String。
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));
}