在线程中接收异常" AWT-EventQueue-0" java.lang.ArrayStoreException

时间:2013-09-30 21:38:23

标签: java swing jtable awt

以下是我收到的例外情况:

线程中的异常" 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;
    }
}

1 个答案:

答案 0 :(得分:1)

所以我说得对,行:

Object[][] data = listOfTeams.teamResults.toArray(new 
         Object[listOfTeams.teamResults.size()][]);

导致你的问题,这是有道理的,因为你实际上并没有在这行代码上创建一个二维数组,而只是一维数组。您需要创建 row 对象,这些对象是对象数组才能使用或不使用DefaultTableModel。如果你想坚持使用DefaultTableModel,那么在尝试在这个构造函数中使用它之前,你可能需要使用for循环来填充你的数组。