为什么 ArrayIndexOutOfBoundsException 在具有一个元素的 Jtable 上出现错误



我想将jTable元素添加到列表中。当jTable有多个元素时,它工作正常,但是当jTable有一个元素时,它会给我以下错误。为什么会这样?如何解决它。谢谢。

这是错误。

错误:线程"AWT-事件队列-0"中出现异常 java.lang.ArrayIndexOutOfBoundsException: 1>= 1

这是代码:

DefaultTableModel table_tags = (DefaultTableModel)this.jTable_selectedTags.getModel(); 
int rowCount=table_tags.getRowCount();
Vector data = table_tags.getDataVector();
Vector row = (Vector) data.elementAt(1);
int mColIndex = 0;
List tags_data = new ArrayList(rowCount);
for (int i = 0; i < table_tags.getRowCount(); i++) {
row = (Vector) data.elementAt(i);
tags_data.add(row.get(mColIndex));
}
System.out.println(tags_data);  

问题在于访问索引。所以,在改变之后

Vector row = (Vector) data.elementAt(1); 

Vector row = (Vector) data.elementAt(0);

它工作正常。

你的 for 循环是错误的。您可以使用以下条件迭代表:

for (int i = 0; i < table_tags.getRowCount(); i++)

问题是您使用行计数来执行迭代。假设 Vector 中只有一个元素,您的行数确实会为 1,但使用它来迭代表会导致它失败,因为表中唯一的元素将在索引 0 处。将上述条件更改为:

for (int i = 0; i < table_tags.getRowCount() - 1; i++)

我想你会没事的。

最新更新