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很有帮助。就我个人而言,我更喜欢将实际对象传递给自定义表模型,但这就是我