当我尝试创建JTable模型时,IndexOutOfBoundsException

时间:2013-11-03 23:43:08

标签: java

当我尝试将JTable添加到我的框架时,我收到此错误: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

import javax.swing.table.AbstractTableModel;
import java.util.List;
import java.util.ArrayList;

public class tablaFormato extends AbstractTableModel {

List<String[]> topFives = new ArrayList <String[]>();

@Override
public int getColumnCount() {
    // TODO Auto-generated method stub
    return 5;
}

@Override
public int getRowCount() {
    // TODO Auto-generated method stub
    return 5;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {

    Object resultado = topFives.get(rowIndex) [columnIndex];

    return resultado;
}

}

问题出在resultado,但我不知道我做错了什么。

3 个答案:

答案 0 :(得分:3)

你的getRowCount()应该返回列表的大小,否则你告诉JTable,“嘿,我有5行”,实际上你最初得到了zip,零,zilch。 / p>

答案 1 :(得分:0)

正如错误试图告诉你的那样,你正试图从空列表中获取一个元素 你需要在列表中放入一些东西才能把它拿出来。

答案 2 :(得分:0)

您的错误肯定是指向该行(请参阅您的例外中的行号)

对象resultado = topFives.get(rowIndex)[columnIndex];

getRowCount()方法告诉表要显示的行数 getColumnCount()方法说明每行要显示的列数

现在该表具有足够的信息来逐个获取数据。它从第0行,第0列开始,然后从第0行第1列开始,直到达到你在getColumnCount()中的答案。然后它进入第1行并做同样的事情。

在您的情况下,只要它在第0行第0列中查询对象时,就会抛出异常,因为您试图从topFives获取索引0处不存在的元素。

你有异常:IndexOutOfBoundsException:Index:0,Size:0(你试图将元素设置为0(第一个),但是大小为0.所以你要求的索引,超出了列表的范围)