Java JTable导致我的应用程序崩溃

Java JTable导致我的应用程序崩溃,java,swing,crash,jtable,Java,Swing,Crash,Jtable,我正在为一个学校项目创建一个相当简单的应用程序。是联络经理。我想在一个表中显示所有联系人,我以前从未使用过JTables,这让我很困惑。我做了很多研究,我只发现了一个线程与我一样的问题,但它没有答案或任何有用的东西 这是我创建表的代码。只是提醒一下,我不想创造任何复杂的东西。只是一个可以插入和删除数据的表。就这些 String[] columnLabels = {"Name", "Number", "Email", "Address"}; Object[][] data = {{"test 1

我正在为一个学校项目创建一个相当简单的应用程序。是联络经理。我想在一个表中显示所有联系人,我以前从未使用过JTables,这让我很困惑。我做了很多研究,我只发现了一个线程与我一样的问题,但它没有答案或任何有用的东西

这是我创建表的代码。只是提醒一下,我不想创造任何复杂的东西。只是一个可以插入和删除数据的表。就这些

String[] columnLabels = {"Name", "Number", "Email", "Address"};
Object[][] data = {{"test 1", "test 2"}, {"test 3", "test 4"}};

JTable table = new JTable(data, columnLabels);
如果我插入

JTable table = new JTable(10,4);

那么它就可以正常工作了。也许有人能给我点启示,因为我不知道怎么了。感谢您的模型数组包含2行2列,而您的列名数组包含4个元素,因此包含4列。这就是问题所在。提供一个每行4个元素的数据数组(可能为空),它应该可以工作

从您正在使用的构造函数的源:

 public int getRowCount() { return rowData.length; }
 public int getColumnCount() { return columnNames.length; }
 public Object getValueAt(int row, int col) { return rowData[row][col]; }
如您所见,渲染器查看
columnNames
的长度以获得列数(此处为4),并对其进行迭代(因此为0-3)。最后,它调用
getValueAt(0,2)
,然后依次调用
rowData[0][2]
和-boom-列索引超出范围

相比之下,
JTable表=新的JTable(10,4)仅创建一个包含10行4列的空模型的表:

public JTable(int numRows, int numColumns) {
    this(new DefaultTableModel(numRows, numColumns));
}

您的模型数组包含2行2列,而列名数组包含4个元素,因此包含4列。这就是问题所在。提供一个每行4个元素的数据数组(可能为空),它应该可以工作

从您正在使用的构造函数的源:

 public int getRowCount() { return rowData.length; }
 public int getColumnCount() { return columnNames.length; }
 public Object getValueAt(int row, int col) { return rowData[row][col]; }
如您所见,渲染器查看
columnNames
的长度以获得列数(此处为4),并对其进行迭代(因此为0-3)。最后,它调用
getValueAt(0,2)
,然后依次调用
rowData[0][2]
和-boom-列索引超出范围

相比之下,
JTable表=新的JTable(10,4)仅创建一个包含10行4列的空模型的表:

public JTable(int numRows, int numColumns) {
    this(new DefaultTableModel(numRows, numColumns));
}

您正在尝试设置一个包含四列的表,但当您为其输入数据时,每行仅为其提供两列。您正在尝试设置包含四列的表,但当您为其输入数据时,每行仅为其提供两列。非常感谢您的帮助!我正要放弃,就用一个JTextArea。但那不是“干净的”。非常感谢你的帮助!我正要放弃,就用一个JTextArea。但那不是“干净的”。