填充TableView时出现Java InvocationTargetException

时间:2015-10-26 22:20:53

标签: java javafx invocationtargetexception

我不确定这个错误是什么或它为什么会发生。我在网上找到的东西与TableViews无关。但是当我的囚犯Class中的这个方法被我的TableView访问时,它会抛出一个[String]?。这是我第一次使用TableView。

InvocationTargetException

Cell(有两个子类但我没有使用上述方法访问其中的数据):

public int getCellBlock() {
    for (int i = 0; i < Main.getCellBlocks().size(); i++) //for each cellblock
        for (int j = 0; j < Main.getCellBlocks().get(i).getCells().size(); j++) //for each cell
            for (int k = 0; k < Main.getCellBlocks().get(i).getCells().get(j).getInmates().size(); k++)
                if (Main.getCellBlocks().get(i).getCells().get(j).getInmates().get(k).equals(this.idNum)) {
                    return i;
                }
    return -1;
}

监狱分区:

import java.io.Serializable;
import java.util.ArrayList;

public class Cell implements Serializable {

private ArrayList<Integer> inmateIdNums;
private int capacity = 0;


Cell(int cap){
    capacity = cap;
    inmateIdNums = new ArrayList<>();

    for (int i = 0; i < capacity; i++)
        inmateIdNums.add(null);

}

public void add (int idNum){
    for (int i = 0; i < capacity; i++){
        if (inmateIdNums.get(i) == null) {
            inmateIdNums.set(i, idNum);
            break;
        }
    }
}

public void add (int idNum, int dur){}

public void add (int idNum, String reason){}

public ArrayList<Integer> getInmates(){ return inmateIdNums; }

public int getEmptyBunks(){
    int emptyBunks = 0;

    for (int i = 0; i < inmateIdNums.size(); i++){
        if (inmateIdNums.get(i) == null)
            emptyBunks++;
    }

    return emptyBunks;
}
}

错误:

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

我不确定是哪一个,但我自己解决了这个问题。循环很好。

问题是两件事之一 - 比较,或者我写信息的文件(我使用二进制文件和ObjectInputStream / ObjectOutputStream)。

在Cell构造函数中,我有:

for (int i = 0; i < capacity; i++)
        inmateIdNums.add(null);

为避免将Integernull进行比较,我将其更改为:

for (int i = 0; i < capacity; i++)
        inmateIdNums.add(0);

这并没有解决我的问题。所以我只能假设某个人在这个糟糕的比较正在进行时,我的一个文件被写错了。作为最后的努力,我删除了我一直在使用的文件并运行我的程序,以创建新文件并添加新条目。

问题解决了。