不断获取jtable值的总和

时间:2018-09-12 17:10:59

标签: java swing

我想连续从jtable获取所有值的总和。就像我制作了一个jtable一样,用户将连续放置数据,并且每当在jtable中插入新行时,都应执行一些代码以获取jtable的所有值的总和,然后将其设置在文本字段上。我已经编写了代码,但是我没有在那种情况下使用代码,以便当在表中插入新行时,代码将运行并获取所有值的新总和并存储在文本字段中。因此,现在应该在哪种jtable方法中使用此代码,以便在插入新行时执行代码。 代码在这里...

    int rows=productionTable.getRowCount();
    int totalBundles=0;
    int totalBoxes=0;

    //totalBundles
    for(int i=0;i<rows;i++)
    {
        totalBundles=totalBundles+Integer.parseInt(productionTable.getValueAt(i, 1)+"");

    }
    this.totalBundlesTextField.setText(totalBundles+"");
    //

    //totalBoxes
    for(int i=0;i<rows;i++)
    {
        totalBoxes=totalBoxes+Integer.parseInt(productionTable.getValueAt(i, 2)+"");

    }
    this.totalBoxesTextField.setText(totalBoxes+"");
    //

1 个答案:

答案 0 :(得分:1)

  

所以现在我应该在哪种jtable方法中使用此代码,以便在插入新行时执行代码

TableModel中的数据更改时,您可以执行此操作。因此,您可以将TableModelListener添加到表的TableModel中。然后,当您执行以下操作时,将生成TableModelEvent

  1. 添加数据行
  2. 删除数据行
  3. 更改现有数据的值

在上述每种情况下,您都可以遍历TableModel以计算新值。

查看JTable -> TableModeListener,了解使用TableModelListener的简单示例。

以上方法假设您的模型中没有太多数据,因为每次更改时它都会重新计算值。

如果您有很多数据,效率不是很高,因此您可能希望将TableModel中的值保持连续运行。因此,您需要自定义TableModel以保留总数。然后在诸如setValueAt(...),insertRow(...),removeRow(...)之类的方法中,您需要添加逻辑以在更新模型时更新总数。