有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用对象列表,使用JTable中定义的起始位置设置值?

我有一个我想放在JTable中的对象列表。下面的映射有一个索引作为键,一个数组作为值。整数数组的第一个元素是行号,第二个元素是列号:

    mStartLocationMap = new HashMap<Integer, int[]>(); // private static
    mStartLocationMap.put(1,new int[]{0,0});
    mStartLocationMap.put(2,new int[]{1,0});
    mStartLocationMap.put(3,new int[]{0,1});
    mStartLocationMap.put(4,new int[]{1,1});

根据我得到的索引,我检索适当的起始位置。该表为16行X 24列。然而,逻辑是这样的,无论起始位置是什么,我拥有的对象的arraylist,每个对象都必须放置在其他每个单元格中,直到我到达列的末尾。然后,这些行也会每隔一行递增一次。以下是最终产品的外观(这是在我的列表中有96个元素的情况下完成的,代码如下所示:

Expected Result

这是我的代码:

    // rowStart and colStart can be 0 or 1
    int counter = 0;
    for(int row=rowStart; row<rowCount ;row=row+2)    // rowcount =16
    {
        for(int col=colStart; col<colCount; col=col+2) // colcount=24
        {
            // myObjs is an ArrayList that contains 96 or less elements. This line throws the exception
            MyObject temp = myObjs.get(counter); 

            myTable.setValueAt(temp,row,col);
            counter++;
        }
    }

我知道这种方法行不通,但我不确定如何在不抛出ArrayIndexOutOfBoundsException的情况下以这种模式填充表格。我知道哪一行抛出了错误,但我想不出另一种方法来实现我想要的——那就是将列表中的所有对象设置到表中,无论列表的大小

谁能给我指出正确的方向吗

谢谢


共 (1) 个答案

  1. # 1 楼答案

    您可能会在这一行遇到异常:

    MyObject temp = myObjs.get(counter);
    

    因为您的数组列表将为空,并且您正在尝试访问第0个元素