使用新值计算JTable列中的总值 [英] Calculating total value in JTable Column using new value
问题描述
我想计算索引[0] [2]中的总值,以前的值是0,但是我用计算结果"1/y"替换并显示了它,当我计算总值时,求和的值是包含"0"的先前值,这是我的代码
I want to calculate total value in index [0][2], previous value is 0, but I have replaced and display it with the calculation result "1/y", and when I calculate total value, value that summed is previous value that containing "0", this my code,
//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"
this column values "1/y" after calculation process
我应该怎么做才能能够使用新值对其求和? 您提供的所有帮助,我将不胜感激,谢谢您
What should I do, to be able to summing it using new value ? all the assistance that you gave, I would appreciate it, thank you
推荐答案
如 DependentColumn
所示,您可以计算您在getValueAt()
的实现中的派生值.如果值所依赖的列是可编辑的,请确保触发一个事件,该事件指示从属单元格已更改.
As shown in DependentColumn
, you can calculate derived values in your implementation of getValueAt()
. If a column on which the value depends is editable, be sure to fire an event indicating that the dependent cell has changed.
附录:我已将代码添加到 getValueAt()
,,但结果相同.
缺少您的 sscce 我在猜测:我看到您在访问allData
数组之后,您可以使用它来构建和更新DefaultTableModel
.我不确定练习的目标,但是您可能不希望在之前更新数组. DefaultTableModel
在内部使用Vector
,并且在构造完成后会忽略该数组.
Absent your sscce I'm guessing: I see that you access the allData
array after you use it to construct and update the DefaultTableModel
. I'm not sure about the goal of the exercise, but you probably wan't to update the array before doing so. DefaultTableModel
uses Vector
internally, and it ignores the array after construction completes.
这篇关于使用新值计算JTable列中的总值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!