我想连续从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+"");
//
答案 0 :(得分:1)
所以现在我应该在哪种jtable方法中使用此代码,以便在插入新行时执行代码
当TableModel
中的数据更改时,您可以执行此操作。因此,您可以将TableModelListener
添加到表的TableModel
中。然后,当您执行以下操作时,将生成TableModelEvent
:
在上述每种情况下,您都可以遍历TableModel
以计算新值。
查看JTable -> TableModeListener,了解使用TableModelListener
的简单示例。
以上方法假设您的模型中没有太多数据,因为每次更改时它都会重新计算值。
如果您有很多数据,效率不是很高,因此您可能希望将TableModel中的值保持连续运行。因此,您需要自定义TableModel以保留总数。然后在诸如setValueAt(...),insertRow(...),removeRow(...)之类的方法中,您需要添加逻辑以在更新模型时更新总数。