【问题标题】:Why ArrayIndexOutOfBoundsException error on Jtable having one element为什么在具有一个元素的 Jtable 上出现 ArrayIndexOutOfBoundsException 错误
【发布时间】:2018-07-09 09:34:22
【问题描述】:

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

这是错误。

错误:线程“AWT-EventQueue-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);  

【问题讨论】:

  • 一个元素在索引0,而不是1
  • 向量行 = (向量) data.elementAt(1);你在说这个吗?
  • 谢谢阿纳布·霍尔。它对我有用。

标签: java jtable


【解决方案1】:

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

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

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

效果很好。

【讨论】:

    【解决方案2】:

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

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

    问题是您使用行数来执行迭代。仅给定 Vector 中的一个元素,您的行数确实会加 1,但使用它来迭代表会导致它失败,因为表中唯一的元素将位于索引 0。将上述条件更改为:

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

    我想你会没事的。

    【讨论】:

    • 谢谢,实际上问题在于 Vector 的访问。因此,在将索引从 1 更改为 0 之后。它工作正常。问候。
    • 这正是我上面所描述的。考虑到您需要对数据进行迭代,因此需要一个具有正确索引的循环。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2023-03-07
    • 2012-10-20
    • 2023-02-11
    • 2021-07-04
    相关资源
    最近更新 更多