Java 如何使用循环向JTable添加项
我在这里提出了这个循环:Java 如何使用循环向JTable添加项,java,swing,jtable,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,
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);
}
for(int i=0;i
它是有效的,但我相信有更好的方法答案将取决于您使用的
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);
}
defaultTableModelMemberTable=。。。;
对于(int i=0;i
这假设您只想将行添加到表模型的末尾;)
就我个人而言,我更喜欢将每个成员作为单个实体添加到表模型中,但这只是我自己
查看更多详细信息…答案将取决于您使用的
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);
}
defaultTableModelMemberTable=。。。;
对于(int i=0;i
这假设您只想将行添加到表模型的末尾;)
就我个人而言,我更喜欢将每个成员作为单个实体添加到表模型中,但这只是我自己
查看更多详细信息…Swing组件正在使用MVC模式。JTable是视图,TableModels是包含数据的模型 您可以使用子类来实现您的目标
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(......));
Swing组件使用MVC模式。JTable是视图,TableModels是包含数据的模型 您可以使用子类来实现您的目标
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(......));
我喜欢您将每一行作为
人
对象处理的方法。话虽如此,我倾向于为此扩展和更改DefaultTableModel
,因为它为大多数AbstractTabelModel
方法提供了合理的返回值。还要注意的是,指向文档的链接最好包含在文档中。添加新内容时,不要忘记触发相应的事件通知;)@是的,对内部数据的任何修改(不仅仅是添加)都应该触发一个适当的事件。@XingFei关于编辑的评论,最好通过编辑答案来添加链接来表达任何感谢。;)这次我来做……)我喜欢您将每一行作为人
对象处理的方法。话虽如此,我倾向于为此扩展和更改DefaultTableModel
,因为它为大多数AbstractTabelModel
方法提供了合理的返回值。还要注意的是,指向文档的链接最好包含在文档中。添加新内容时,不要忘记触发相应的事件通知;)@是的,对内部数据的任何修改(不仅仅是添加)都应该触发一个适当的事件。@XingFei关于编辑的评论,最好通过编辑答案来添加链接来表达任何感谢。;)这次我来做……)很高兴这有帮助。就我个人而言,我更喜欢将实际对象传递给自定义表模型,但这对meGlad很有帮助。就我个人而言,我更喜欢将实际对象传递给自定义表模型,但这就是我