JTable java.lang.IndexOutOfBoundsException: 无效范围

JTable java.lang.IndexOutOfBoundsException: Invalid range

我想在空行中添加一个新行JTable

这是我的代码:

Object columnNamesPax[] = {"#","Name","Surname","Sex","Age","Class"};
Object[][] data = new Object[5][columnNamesPax.length];

JTable tablePax = new JTable(new DefaultTableModel(data,columnNamesPax));

DefaultTableModel defaultModel = (DefaultTableModel) tablePax.getModel();
System.out.println(tablePax.getColumnCount());
defaultModel.addRow(new Object[]{"1","2","3","4","5","6"});

控制台输出:

Exception in thread "AWT-EventQueue-0" 6

java.lang.IndexOutOfBoundsException: Invalid range

我不明白为什么会有IndexOutOfBoundsException,如果列数是6。

没有答案

您上面的代码没有显示错误。比如我用上面的代码创建mymcve,就没有出现这样的错误:

import javax.swing.*;
import javax.swing.table.*;

public class Foo {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                Object columnNamesPax[] = { "#", "Name", "Surname", "Sex",
                        "Age", "Class" };
                Object[][] data = new Object[5][columnNamesPax.length];

                JTable tablePax = new JTable(new DefaultTableModel(data,
                        columnNamesPax));

                DefaultTableModel defaultModel = (DefaultTableModel) tablePax
                        .getModel();
                System.out.println(tablePax.getColumnCount());
                defaultModel.addRow(new Object[] { "1", "2", "3", "4", "5", "6" });

                JOptionPane.showMessageDialog(null, new JScrollPane(tablePax));
            }
        });
    }
}

您只是 posting 无法编译和无法运行的代码片段并没有削减它,因为它们没有包含足够的信息让我们看到您的错误。此外,我们不希望看到您的完整代码库,因此被大量不相关的代码淹没,因此 再次 由您来创建和 post 你的 Minimal, Complete, and Verifiable example 类似于我上面的例子(也请看我提供的link),一个这向我们展示了您的问题,这将有希望让我们真正帮助您。