如何使用循环将项添加到JTable

时间:2014-05-06 04:30:45

标签: java swing jtable

我在这里想出了这个循环:

    for(int i = 0; i < memberArrayList.size(); i++){
        int j = 0;
        memberTable.setValueAt(memberArrayList.get(i).getFirstName(), i, j);
        j++;
        memberTable.setValueAt(memberArrayList.get(i).getLastName(), i, j);
        j++;
        memberTable.setValueAt(memberArrayList.get(i).getEmail(), i, j);
        j++;
        memberTable.setValueAt(memberArrayList.get(i).getPhoneNumber(), i, j);
        j++;
        memberTable.setValueAt(memberArrayList.get(i).getLevel(), i, j);
    }

它有效,但我确信有更好的方法

2 个答案:

答案 0 :(得分:2)

答案取决于您使用的TableModel类型,例如,如果您使用的是DefaultTableModel,则可以使用类似的内容......

DefaultTableModel memberTable= ...;

for(int i = 0; i < memberArrayList.size(); i++){
    Object[] rowData = new Object[]{
        memberArrayList.get(i).getFirstName(),
        memberArrayList.get(i).getLastName(), 
        memberArrayList.get(i).getEmail(), 
        memberArrayList.get(i).getPhoneNumber(),
        memberArrayList.get(i).getLevel()
        };
    memberTable.addRow(rowData);
}

这假设您只想在表模型的末尾添加行;)

就个人而言,我更愿意将每个成员添加到表模型中作为单个实体,但那只是我

请查看How to Use Tables了解更多详情......

答案 1 :(得分:2)

Swing组件正在使用MVC模式。 JTable是视图,TableModels是包含数据的模型。

您可以继承AbstractTableModel以实现目标。

public class MyTableModel extends AbstractTableModel {
    // override these methods:
    // getColumnCount, getRowCount, getValueAt
    // and add data manipulation methods
}

然后使用MyTableModel

创建表
MyTableModel mtm = new MyTableModel(......);
JTable table = new JTable(mtm);

然后在mtm中调用数据操作方法。

之类的东西
mtm.addPerson(new Person(......));