我是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的线程中执行。

07-26 08:37
查看更多