以下是我收到的例外情况:
线程中的异常" AWT-EventQueue-0" java.lang.ArrayStoreException
这是我的代码:
public class LeagueTable extends JTable {
public static final Dimension INITIAL_SIZE = new Dimension(500, 300);
public final String[] columnNames;
DefaultTableModel model;
JTable table;
public LeagueTable(){
DatabaseConnector listOfTeams = new DatabaseConnector();
columnNames = new String[]{"Teams", "Goal Difference", "Points", "Verdict"};
Object[][] data = listOfTeams.teamResults.toArray(new Object[listOfTeams.teamResults.size()][]);
model = new DefaultTableModel(data, columnNames);
table = new JTable(model){@Override
public boolean isCellEditable(int row, int column) {
return false;
}};
JScrollPane pane = new JScrollPane(table);
setVisible(true);
setSize(INITIAL_SIZE);
setLayout(new FlowLayout());
add(pane);
}
public String[] getStringArray() {
return columnNames;
}
}
答案 0 :(得分:1)
所以我说得对,行:
Object[][] data = listOfTeams.teamResults.toArray(new
Object[listOfTeams.teamResults.size()][]);
导致你的问题,这是有道理的,因为你实际上并没有在这行代码上创建一个二维数组,而只是一维数组。您需要创建 row 对象,这些对象是对象数组才能使用或不使用DefaultTableModel。如果你想坚持使用DefaultTableModel,那么在尝试在这个构造函数中使用它之前,你可能需要使用for循环来填充你的数组。