无法从JTable中的列获取正确的值

时间:2012-03-22 09:37:17

标签: java swing jtable type-conversion defaulttablemodel

我有一个名为“Cart”的JTable,用户可以在购买之前添加产品。该表中唯一可编辑的列是名为Quantity的最后一列,它允许用户更改他们希望购买的产品数量。默认情况下,在添加产品时,此值为1。当我使用这些默认值创建发票时,ORDERS DB表已成功更新。但是,如果我通过键入数量更改数量单元格中的数量,我会得到一个例外,我不知道如何修复。看起来我试图从该列获取的整数值以字符串形式返回,而不是整数。

基本上我有整数tempStock,其中我存储了产品数量。我从行“i”中的表的Model和最后一列“4”获得该值。

int tempStock = (int)cartModel.getValueAt(i, 4);

当程序在此表中添加新行时,fourht列默认为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));
}

1 个答案:

答案 0 :(得分:3)

  1. 你必须在TableModel中使用值Integer setColumnClass以int tempStock = (int)cartModel.getValueAt(i, 4);

  2. 的形式返回int值
  3. 了解真实的消息并帮助您使用SSCCE编辑问题