使用新值计算JTable列中的总值

我想计算索引[0] [2]中的总值,前一个值是0,但是我已经用计算结果“1 / y”替换并显示它,当我计算总值时,求和的值是先前的值包含“0”的,这是我的代码,

//observation table //0 1 2 3 4 5 6 titleColumn = new Object[]{"Time (Second)","Medicine", "1/y","x2", "X/Y", "Y^", "Error"}; //0 1 2 3 4 5 6 allData = new Double[][] {{1.0,1.02,0.0,0.0,0.0,0.0,0.0}, {2.0,0.667,0.0,0.0,0.0,0.0,0.0}, {3.0,0.367,0.0,0.0,0.0,0.0,0.0}, {4.0,0.278,0.0,0.0,0.0,0.0,0.0}, {5.0,0.237,0.0,0.0,0.0,0.0,0.0}, {6.0,0.187,0.0,0.0,0.0,0.0,0.0}, {7.0,0.155,0.0,0.0,0.0,0.0,0.0}, {8.0,0.156,0.0,0.0,0.0,0.0,0.0}, {9.0,0.142,0.0,0.0,0.0,0.0,0.0}, {10.0,0.111,0.0,0.0,0.0,0.0,0.0}, {11.0,0.12,0.0,0.0,0.0,0.0,0.0}, {12.0,0.097,0.0,0.0,0.0,0.0,0.0}, {13.0,0.099,0.0,0.0,0.0,0.0,0.0}, {14.0,0.089,0.0,0.0,0.0,0.0,0.0}, {15.0,0.079,0.0,0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0,0.0,0.0,0.0}}; tableModelObservation = new DefaultTableModel(allData, titleColumn); tableObservation.setModel(tableModelObservation); int row,column,inputRow,inputColumn; //index [0][2] was replaced with calculation 1/y row = 0; column = 1; inputRow = 0; inputColumn = 2; double onePerY = 0; for(int a=0;a<allData.length;a++){ onePerY = 1/allData[row][column]; //is this the way to use getValueAt() and for indicating that the dependent cell has been change ? tableObservation.getModel().getValueAt(row, column); tableObservation.firePropertyChange("1/y", inputRow, inputColumn); tableObservation.getModel().setValueAt(onePerY, inputRow, inputColumn); inputRow++; row++; } //calculation total 1/y, summing is still using previous value "0" row = 0; column = 2; inputRow = 15; inputColumn = 2; double totalOnePerY = 0; for (int a=0;a<allData.length;a++){ totalOnePerY += allData[row][column]; row++; } //displaying result in row index[15] and column index[2] tableObservation.getModel().setValueAt(totalOnePerY, inputRow, inputColumn); 

计算过程后,此列值为“1 / y” 第1栏

我该怎么办,能够用新的价值来总结它? 你给的所有帮助,我将不胜感激,谢谢

DependentColumn所示,您可以在getValueAt()实现中计算派生值。 如果值所依赖的列是可编辑的,请确保触发指示依赖单元格已更改的事件。

附录: 我已经使用 getValueAt() 添加了我的代码但结果是一样的。

没有你的sscce我猜测:我看到你使用它来构造和更新DefaultTableModel 访问allData数组。 我不确定练习的目标,但你可能不会在这之前更新arrays。 DefaultTableModel内部使用Vector ,并在构造完成后忽略该数组。

您可以尝试使用包装原始模型的EnvelopeTableMode ,并可以提供分组function(SUM,COUNT,AVG …)。