Я попытался решить эту проблему, создав 2 отдельных массива данных, содержащих ту же информацию. Один из этих массивов данных (tableData) используется в конструкторе для JTable, в то время как другой (oldTableData) используется для изменения значений в ячейках до их первоначального значения при первом запуске приложения. Мне нужен второй массив данных, так как первый массив данных автоматически обновляется каждый раз, когда я изменяю значение в ячейке в таблице, можно ли отключить эту функцию JTable?Есть ли более эффективный способ сбросить содержимое ячеек, которые были отредактированы в JTable, до того, что они ранее были
Мне нужна эта функция, которая будет использоваться при нажатии кнопки отмены при редактировании ячеек в таблице, так как кнопка отмены отменяет все изменения, внесенные при редактировании ячеек. Вот моя реализация для кнопки отмены до сих пор:
if(e.getSource().equals(cancelMenuButton)) {
//prints set of edited cells
System.out.println("edited cells: "+editedCells);
///once cancel button is clicked, disable both submit and cancel, as we are out of edit mode
cancelMenuButton.setEnabled(false);
submitMenuButton.setEnabled(false);
//reset values in table
Iterator<Point> iterator = editedCells.iterator();
while(iterator.hasNext()) {
Point point = iterator.next();
System.out.println("Value at "+point.x+", "+point.y+": "+table.getValueAt(point.y, point.x));
System.out.println("Old value at "+point.x+", "+point.y+": "+oldTableData[point.y][point.x]);
table.setValueAt(oldTableData[point.y][point.x], point.y, point.x);
}
editedCells.clear();
//cancel cell editing
CellEditor cellEditor = table.getCellEditor();
if(cellEditor != null) {
if(cellEditor.getCellEditorValue() != null) {
cellEditor.stopCellEditing();
} else {
cellEditor.cancelCellEditing();
}
}
}
Мой вопрос, является ли или не существует простой способ сделать это, один, который не требует создания двух одинаковых массивов данных. Спасибо.
Что такое ваш код для setValueAt, для лучшей помощи soomer опубликовать SSCCE/MCVE, короткий, выполнимый, компилируемый, с жестким кодом для JTable/XxxTableModel в локальных переменных – mKorbel