我有以下代码,我在列表中添加值后实现更新jTable
。我需要在jtable
上添加行,但它在第一行上覆盖。它应保留第一个值并在新行中添加新值。但不是这样的。有任何想法来解决我的问题。
private void populateTableByRecentlyAddedSubjectName(String subjectName) {
Vector<String> tableHeaders = new Vector<String>();
Vector tableData = new Vector();
tableHeaders.add("Subject Name");
java.util.List<Subject> subjectList = new ArrayList<>();
Subject subject = new Subject();
subject.setSubjectName(subjectName);
subjectList.add(subject);
if (subjectList != null) {
for (Subject subjectObj : subjectList) {
Vector<Object> obj = new Vector<>();
System.out.println("Name " + subjectObj.getSubjectName());
obj.add(subjectObj.getSubjectName());
tableData.add(obj);
}
}
subjectListTable.setModel(new DefaultTableModel(tableData, tableHeaders));
}
答案 0 :(得分:1)
subjectListTable.setModel(new DefaultTableModel(tableData, tableHeaders));
在我看来,你每次都在创建一个新的TableModel,显然数据正在被替换。
我需要在jtable上添加行
您通过更新TableModel中的数据来更新表中的现有数据。所以你的代码应该是这样的:
DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow(....);