我正面临着Jtable的一个奇怪问题。我有一个小的独立java应用程序,其中我使用了Jtable来显示从数据库中检索的数据。用户可以查看和编辑数据。编辑单元格并按下更新按钮后,编辑的值将在数据库中更新。现在,当用户编辑数据并单击更新按钮时,第一次发生的事情是数值在数据库中正确保留,用户离开模块。但是,再次,如果他/她进入相同的模块并编辑更多单元格并单击更新按钮,则在后端我从这些单元格中获取旧值,尽管Jtable显示单元格中的最新更新值。
以下是代码。
private JTable jt;
private TableRowSorter<TableModel> tableSorter;
private Dao dao=new Dao();
updateDetails.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
boolean isSuccessful = true;
int rowCount = jt.getRowCount();
List<EmployeeMaster> empMasterList = new ArrayList<>();
int j = 0;
for (int i = 0; i < rowCount; i++) {
EmployeeMaster master = new EmployeeMaster();
j = 0;
try {
master.setEmpId(Long.parseLong((String) jt.getValueAt(i, j)));
j++;
compId.setName(Long.parseLong((String) jt.getValueAt(i, j)));
j++;
compId.setNumber((String) jt.getValueAt(i, j));
j++;
empMasterList.add(master);
}
dao.updateAllEmpDetails(empMasterList);
homePanel.setVisible(true);
UpdateEmp.setVisible(false);
}
}
});
getDataFromDBtoJtable.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
List<EmployeeMaster> empMasterList = dao.getAllEmpDetails();
String data[][] = new String[empMasterList.size()][3];
int i = 0;
int j = 0;
for (EmployeeMaster employeeMaster : empMasterList) {
j = 0;
data[i][j] = String.valueOf(employeeMaster.getEmpId());
j++;
data[i][j] = String.valueOf(employeeMaster.getName());
j++;
data[i][j] = String.valueOf(employeeMaster.getNumber());
i++;
}
String column[] = { "ID", "Name", "Number"};
jt = new JTable(data, column) {
public boolean isCellEditable(int row, int column) {
if (column == 0 || column == 1 || column == 2)
return false;
else
return true;
};
};
tableSorter = new TableRowSorter<TableModel>(jt.getModel());
jt.setBounds(12, 12, 1200, 400);
jt.setRowSorter(tableSorter);
homePanel.setVisible(false);
UpdateEmp.setVisible(true);
JScrollPane pane = new JScrollPane(jt);
pane.setBounds(1, 40, 1150, 300);
setBounds(0, 0, 2000, 800);
UpdateEmp.add(pane);
}
});
updateDetails - &gt;按钮从jtable获取数据并在数据库中更新
getDataFromDBtoJtable - &gt;按钮从数据库中获取数据并在Jtable中显示
每当用户点击updateDetails时,我都会更新数据库并强制用户离开模块。因此,每当用户进入jtable模块时,他/她就会获得新的Jtable实例。但仍然无法确定出现了什么问题。