添加到JTable中的特定单元格将引发java.lang.ArrayIndexOutOfBoundsException:4> = 0

时间:2019-01-08 15:03:26

标签: java swing jtable

java.lang.ArrayIndexOutOfBoundsException:4> = 0异常

我创建了一种将对象添加到JTable中特定单元格的方法 它抛出了java.lang.ArrayIndexOutOfBoundsException:4> = 0异常

这些是我的代码的一部分

    //creating a JTable and a table model
    horaireTable = new JTable();
    modelHT = new DefaultTableModel();
    modelHT.setColumnIdentifiers(rowHead);
    horaireTable.setModel(modelHT);
    horaireTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    horaireTable.getColumnModel().getColumn(0).setMinWidth(106);
    horaireTable.getColumnModel().getColumn(1).setMinWidth(107);
    horaireTable.getColumnModel().getColumn(2).setMinWidth(106);
    horaireTable.getColumnModel().getColumn(3).setMinWidth(107);
    horaireTable.getColumnModel().getColumn(4).setMinWidth(106);
    horaireTable.getColumnModel().getColumn(5).setMinWidth(107);
    horaireTable.getColumnModel().getColumn(6).setMinWidth(106);

    JScrollPane paneHT = new JScrollPane(horaireTable);

    paneHT.setPreferredSize(new Dimension(750, 130));

    //getting data to add
    int j,s;

    j = listJours.getSelectedIndex();  //listJours and listSeance are two 
    s = listSeance.getSelectedIndex(); // Jlists containing strings
    String h ="exemple";

    //adding to the table
    modelHT.setValueAt(h,s,j);

我得到的结果是java.lang.ArrayIndexOutOfBoundsException:4> = 0异常

1 个答案:

答案 0 :(得分:0)

  

我得到的结果是java.lang.ArrayIndexOutOfBoundsException:4> = 0异常

您正在尝试更新TableModel中不存在的单元格。

modelHT = new DefaultTableModel();

您创建了一个空的TableModel,其中包含0行和0列。

modelHT.setColumnIdentifiers(rowHead);

然后将7个列标题添加到表中,但仍然有0行数据。

modelHT.setValueAt(h,s,j);

如果模型中不存在单元格的值,则不能只是设置它。

如果要更改单元格中的数据,则该数据必须存在于TableModel中。

一种方法是创建一个具有定义的行数和列数的TableModel:

//modelHT = new DefaultTableModel();
modelHT = new DefaultTableModel(rowHead, 5); 

这将创建一个模型,该模型具有“ rowHead”变量指定的列数以及每个单元格中具有空值的5行数据。

另一种方法是先创建一个只定义了列的TableModel,然后根据需要动态添加数据行:

modelHT = new DefaultTableModel(rowHead, 0); 
...
modelHT.addRow(...);