我在这里想出了这个循环:
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);
}
它有效,但我确信有更好的方法
答案 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(......));