Вычисление общего значения в столбце 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" после процесса расчета
Что я должен сделать, чтобы иметь возможность суммировать его с использованием нового значения? вся помощь, которую вы оказали, я был бы признателен, спасибо
2 ответа
Как показано в DependentColumn
, вы можете рассчитать производные значения в вашей реализации getValueAt()
, Если столбец, от которого зависит значение, является редактируемым, обязательно запустите событие, указывающее, что зависимая ячейка изменилась.
Приложение: я добавил свой код с getValueAt()
, но результат тот же.
Я думаю, что при отсутствии вашей информации вы получаете доступ к allData
массив после того, как вы используете его для создания и обновления DefaultTableModel
, Я не уверен насчет цели упражнения, но вы, вероятно, не захотите обновлять массив, прежде чем делать это. DefaultTableModel
использования Vector
внутренне, и он игнорирует массив после завершения строительства.
Вы можете попробовать использовать EnvelopeTableMode
которая оборачивает оригинальную модель и может обеспечить функции группировки (SUM, COUNT, AVG...).