使用 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) {
这会让事情更清楚。)
我正在尝试获取我的 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) {
这会让事情更清楚。)