首页 文章

如何从单元格中保存新值,而不是旧单元格?

提问于
浏览
1

我在JScrollPane中有一个JTable,数据来自数据库 . 单元格是可编辑的,我想将新值(已编辑的值)保存在数据库中 . 问题是getValueAt(row,col)返回旧的未编辑的值 .

以下是从单元格中获取值并将其插入数据库的代码 .

DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
    int row = table.getEditingRow();
    if(row == -1) return -1;
    String name = tableModel.getValueAt(row, 0).toString();
    String stringPrice = tableModel.getValueAt(row, 1).toString();
    float price = Float.parseFloat(stringPrice);
    products.updateProduct(name, price);
    ...
    return 1;

这是我在updateProduct(名称,价格)方法中得到的:

UPDATE products
SET `prod_name` = 'OLD_NAME', `prod_price` = 'OLD_PRICE'
WHERE `id` = 4

代替:

UPDATE products
SET `prod_name` = 'NEW_NAME', `prod_price` = 'NEW_PRICE'
WHERE `id` = 4

可能有一个简单的解决方案,但我无法弄清楚 . 任何帮助表示赞赏 .

2 回答

  • 1

    如果不确切地知道你的代码是如何被调用的,我猜你的问题是单元编辑器还没有被停止,所以模型还没有用新数据更新 .

    您可以使用TableModelListener在单元格中的数据发生更改时收到通知 . 然后,您可以保证模型中的数据是正确的 .

    或者,如果您使用"Save"按钮更新数据库,则需要阅读Table Stop Editing以解决您的问题 .

  • -1

    您可以实现自己的单元格编辑器,并使用其当前值而不是模型中的值(如果它处于活动状态)

相关问题