我是Java的新手,所以这对于长期的Java程序员来说可能是一个容易的问题。
无论如何,我的问题是使用JTable。我想加载/保存该JTable中的数据。问题是我不确定如何保存用户已以某种方式更改的单元格。
点击事件如下所示:
@SuppressWarnings("serial")
class EditableTableModel extends AbstractTableModel {
String[] columnTitles;
Object[][] dataEntries;
int rowCount;
public void setValueAt(Object value, int row, int column) {
//Any change to the table
dataEntries[row][column] = value;
}
}
每当我更改jTable中的任何单元格时,此功能都会触发。它还为我提供了来自该已编辑单元格的行号和列号,以及更改后的值。但是我的问题是:
如果一次仅将其作为一个单元格值,该如何将这些数据保存到数据库中?
我的数据库结构如下所示(其布局/顺序与jTable结构相同):
ID | Data_script | data_status | data_users | data_error | data_rundate | lastUserWhoMod
-------------------------------------------------------------------------------------------
1 | Inquiries | Passed | Bob | No errors | 01/20/2019 | Bob
2 | Reporting | Passed | Jenny | No errors | 01/20/2019 | Bob
3 | Background | Failed | Bob | Lines 4,8 | 01/20/2019 | Jenny
4 | Maintenance | Passed | George | No errors | 01/20/2019 | Bob
因此,例如,如果我将data_users的第一行第三列从Jenny更改为George,那么我如何将其映射到数据库以将其保存在正确的位置(行,列)?
最佳答案
添加一个变量
int lastChanged = 0;
在setValueAt中,添加
lastChanged =行;
并在一个单独的线程中调用一个函数以更新数据库的整个记录(由lastChanged指出)。该函数必须将lastChanged的值重置为-1。
对DB的调用必须在单独的线程中执行,因为setValueAt将在Java用于绘制GUI的线程中执行。