在添加新值后,Record覆盖而不是在jtable上添加新行

时间:2013-12-04 16:02:17

标签: java swing list jtable

我有以下代码,我在列表中添加值后实现更新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));
}

1 个答案:

答案 0 :(得分:1)

subjectListTable.setModel(new DefaultTableModel(tableData, tableHeaders));

在我看来,你每次都在创建一个新的TableModel,显然数据正在被替换。

  

我需要在jtable上添加行

您通过更新TableModel中的数据来更新表中的现有数据。所以你的代码应该是这样的:

DefaultTableModel model = (DefaultTableModel)table.getModel();
model.addRow(....);