使用 DefaulTableModel 将 ArrayList 项目添加到 JTable

ArrayList items to JTable using DefaulTableModel

我正在尝试获取我的 ArrayList 中的内容,保存 FootballClub 对象并将它们显示到我的 JTable 上。我似乎无法让它工作,我不确定我做错了什么。任何帮助将不胜感激。它表示 model.add() 此处不允许使用数组初始值设定项。我的 columnNames 似乎也没有显示

// the arraylist containing footballclub objects
protected ArrayList<FootballClub> clubs = new ArrayList<FootballClub>();


 public void displayTable(ArrayList<FootballClub> footballClubs)
{
    String[] columnNames = {"Club name", "goals", "points", "wins"};
    DefaultTableModel model = new DefaultTableModel(columnNames, 0);

    for(int i = 0; i < footballClubs.size(); i++)
    {
        String name = footballClubs.get(i).getClubName();
        int goals = footballClubs.get(i).getGoals();
        int points = footballClubs.get(i).getPoints();
        int wins = footballClubs.get(i).getPoints();
        model.addRow({{name, goals,points,wins}});
    }

    final JTable teamTable = new JTable(model);
    teamTable.setFillsViewportHeight(true);

    JFrame frame = new JFrame("Tableview");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.pack();
    frame.setSize(500, 500);
    frame.setVisible(true);

}

你不会说你写的东西怎么行不通。我假设此行存在编译器问题:

    model.addRow({{name, goals,points,wins}});

您似乎在尝试使用 Object[] 重载。正确的语法是:

    model.addRow(new Object[] { name, goals, points, wins });

或者,数组初始化器的特殊语法:

    Object[] row = { name, goals, points, wins} ;
    model.addRow(row);

如果有 List 过载,您可以使用 List.of(name, goals, points, wins),但没有。

(另请注意,通常使用 List 而不是 ArrayList。如果与 java.awt.List 有冲突,您可以显式添加 import java.util.List

for可以写成:

for (FootballClub club : footballClubs) {

这会让事情更清楚。)