Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将DefaultTableModel设置为JDialog中包含的JTable_Java_Jtable_Jdialog_Defaulttablemodel_Abstracttablemodel - Fatal编程技术网

Java 无法将DefaultTableModel设置为JDialog中包含的JTable

Java 无法将DefaultTableModel设置为JDialog中包含的JTable,java,jtable,jdialog,defaulttablemodel,abstracttablemodel,Java,Jtable,Jdialog,Defaulttablemodel,Abstracttablemodel,我创建了一个JDialog,其中包含一个JTable,当我尝试为它分配DefaultTableModel时,它会给我一个异常,JDialog甚至不会出现java.lang.ArrayIndexOutOfBoundsException:11 分配表格模型的代码: jTable1.setModel(new BomModel(GetBomForSetupMaterial.getPartPositionList())); MyAbstractTableModel类: public class BomM

我创建了一个JDialog,其中包含一个JTable,当我尝试为它分配DefaultTableModel时,它会给我一个异常,JDialog甚至不会出现
java.lang.ArrayIndexOutOfBoundsException:11

分配表格模型的代码:

jTable1.setModel(new BomModel(GetBomForSetupMaterial.getPartPositionList()));
My
AbstractTableModel
类:

public class BomModel extends AbstractTableModel {

    private static List<JPartPosition> partPositionList = new ArrayList<JPartPosition>();

    private String[] columnNames = {"Part Header ID", "Mounting Place", "Part Number",
        "Component Type", "Description", "PCB Layer ID", " Processing Type ID", "Component Quantity", "Quantity Unit ID", "Mounting Place Related Machine Group ID", "Componen Setup"};

    public BomModel() {
    }

    public BomModel(List<JPartPosition> positionList){
        this.partPositionList = positionList;

    }

    @Override
    public int getRowCount() {
        return partPositionList.size();
    }

    @Override
    public int getColumnCount() {
        return 12;
    }

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

        Object value = "??";
        JPartPosition jpart = partPositionList.get(rowIndex);
        switch (columnIndex) {
            case 0:
                value = jpart.getPartHeaderId();
                break;
            case 1:
                value = jpart.getMountingPlace();
                break;
            case 2:
                value = jpart.getPartNumber();
                break;
            case 3:
                value = jpart.getComponentType();
                break;
            case 4:
                value = jpart.getDescription();
                break;
            case 5:
                value = jpart.getPcbLayerId();
                break;
            case 6:
                value = jpart.getProcessingTypeId();
                break;
            case 7:
                value = jpart.getComponentQuantity();
                break;
            case 8:
                value = jpart.getQuantityUnitId();
                break;
            case 9:
                value = jpart.getMountingPlaceRelatedMachineGroupId();
                break;
            case 10:
                value = jpart.getComponentSetup();
                break;
                //do i need the ID???////////////////
        }

        return value;
    }

        public JPartPosition getMatAt(int row) {
        return partPositionList.get(row);
    }

    @Override
    public String getColumnName(int col) {
        return columnNames[col];
    }

}
公共类BomModel扩展了AbstractTableModel{
私有静态列表partPositionList=new ArrayList();
私有字符串[]columnNames={“部件标题ID”、“安装位置”、“部件编号”,
“组件类型”、“说明”、“PCB层ID”、“加工类型ID”、“组件数量”、“数量单位ID”、“与安装位置相关的机器组ID”、“组件设置”};
公共BomModel(){
}
公共BomModel(列表位置列表){
this.partPositionList=位置列表;
}
@凌驾
public int getRowCount(){
返回partPositionList.size();
}
@凌驾
public int getColumnCount(){
返回12;
}
@凌驾
公共对象getValueAt(int行索引、int列索引){
对象值=“?”;
JPartPosition jpart=partPositionList.get(rowIndex);
开关(列索引){
案例0:
value=jpart.getPartHeaderId();
打破
案例1:
value=jpart.getMountingPlace();
打破
案例2:
value=jpart.getPartNumber();
打破
案例3:
value=jpart.getComponentType();
打破
案例4:
value=jpart.getDescription();
打破
案例5:
value=jpart.getPcbLayerId();
打破
案例6:
value=jpart.getProcessingTypeId();
打破
案例7:
value=jpart.getComponentQuantity();
打破
案例8:
value=jpart.getQuantityUnitId();
打破
案例9:
value=jpart.getMountingPlaceRelatedMachineGroupId();
打破
案例10:
value=jpart.getComponentSetup();
打破
//我需要身份证吗////////////////
}
返回值;
}
公共JPartPosition getMatAt(国际行){
返回partPositionList.get(行);
}
@凌驾
公共字符串getColumnName(int-col){
返回列名[col];
}
}

我用来分配表模型的代码行可以很好地工作,例如,如果它是JFrame中包含的JTable,但它在JDialog中不起作用。我之所以需要将此表放在JDialog中,是因为我需要在用户在JDialog中选择一个值然后在主应用中使用时停止主应用。我发布了另一个与此相关的问题,我之前尝试使用JFrame,但这不是我需要的方式。我将留下链接供参考

看起来您有一个大小为11的列名数组,但您的getColumnCount方法返回12。

哇,我觉得太愚蠢了!哈哈哈谢谢你善良的陌生人