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

标签 java swing jtable type-conversion defaulttablemodel

我有一个名为“购物车”的 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));
}

最佳答案

  1. 您必须在 TableModel 中使用值为 Integer 的 setColumnClass 来返回 int tempStock = (int)cartModel.getValueAt(i, 4);

    形式的 int 值/li>
  2. 对于真正的建议和帮助,您必须使用 SSCCE 编辑您的问题

关于java - 无法从 JTable 中的列获取正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9819616/

相关文章:

java - JComponent PaintComponent 未出现在面板上

java - 为什么原始流没有收集(收集器)?

java - 工匠CMS : Crafter Engine doesn't seem to notice changes in the/classes/groovy folder

java - 半透明 JFrame 边框 JDK 7

java - 在 gui Java 中对 if 语句的输出显示添加延迟

java - .ods 电子表格到 JTable

java - 使用 MouseListener 事件在 JTable 中出现 NullPointerException

java - 无法从 List<List> 转换为 List<List<?>>

java - 如何在正则表达式中进行模式匹配?

java - 如何在TableModelEvent中获取JTable