填充 TableView 时出现 Java InvokingTargetException

标签 java javafx invocationtargetexception

我不确定这个错误是什么或者为什么会发生。我在网上找到的所有内容都与 TableViews 无关。但是,当我的 TableView 访问我的囚徒类中的这个方法时,它会抛出 InitationTargetException。这是我第一次使用 TableView。

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;
}

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

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;
}
}

细胞 block :

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

public class CellBlock implements Serializable{

private String name;
private String type;
private int capacity;
private int occupancy = 0;
private ArrayList<Cell> cells;

CellBlock(int cap, String nName, String nType, int cellCapacity){
    name = nName;
    type = nType;
    capacity = cap;
    cells = new ArrayList<>(capacity);

    if (type == "Maximum Security" || type == "Minimum Security") {
        for (int i = 0; i < capacity; i++)
            cells.add(new Cell(cellCapacity));
    }
    else if(type == "Infirmary"){
        for (int i = 0; i < capacity; i++)
            cells.add(new InfirmaryCell(cellCapacity));
    }
    else if(type == "Isolation"){
        for (int i = 0; i < capacity; i++)
            cells.add(new IsolationCell(cellCapacity));
    }
}

public void addInmate(int cell, int inmateIdNum){
    cells.get(cell-1).add(inmateIdNum);
    occupancy++;
}

public void addInmate(int cell, int inmateIdNum, String reason){
    cells.get(cell-1).add(inmateIdNum, reason);
    occupancy++;
}

public void addInmate(int cell, int inmateIdNum, int duration){
    cells.get(cell-1).add(inmateIdNum, duration);
    occupancy++;
}

public void removeInmate(int inmateIdNum){
    //search for inmate and remove from list
}

public ArrayList<Cell> getInmates(){ return cells; }

public boolean checkCapacity(){
    if (capacity > occupancy)
        return true;

    return false;
}

public ArrayList<Cell> getCells(){ return cells; }

public ArrayList<String> getOpenCells(){
    ArrayList<String> openCells = new ArrayList<>();

    for (int i = 0; i < cells.size();i++){
        if (cells.get(i).getEmptyBunks() > 0)
            openCells.add(Integer.toString(i+1));
    }

    return openCells;
}
}

错误:

enter image description here

enter image description here

最佳答案

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

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

在我的 Cell 构造函数中:

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

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

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

这并没有解决我的问题。因此,我只能假设有人在进行这种蹩脚的比较时,在编写我的一个文件时出了问题。作为最后的努力,我删除了我一直在使用的文件并重新运行我的程序以创建新文件并添加新条目。

问题已解决。

关于填充 TableView 时出现 Java InvokingTargetException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356645/

相关文章:

Java:将 java.awt.Color 转换为 javafx.scene.paint.Color

java - Android 对 EditText 的异常处理

java - 如何获得自定义标题 View ?

java - 生成 IPv4 范围内的所有 IP 地址

java - Observable OnCompleted 无法更新 UI

JAVAFX:在 FXML 之间传递数据不起作用

java - 如何指出字符串中所有重复字符的索引位置

java - 检测对象是否保存在 javafx 桌面应用程序中的最佳方法是什么?

java - 在使用 eclipse (Kepler) 实现的 Applet 中使用 GSON 的正确配置是什么

java - 小程序错误 - java.lang.reflect.InitationTargetException