我的自定义添加行代码抛出异常

时间:2012-10-17 09:24:35

标签: java swing jtable

在我的jTable中,第一列包含数值。选择“添加行”时的下一行运行此代码:

DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
int x = jTable1.getRowCount();
String cellValue = "";
if(x > 0){
    java.lang.Object cell = jTable1.getValueAt(x,0); 
    int a = Integer.parseInt(cell.toString());
    int b = a + 1;
    cellValue = Integer.toString(b);
}

java.lang.Object[] os = new Object[]{cellValue,"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",};
model.addRow(os);
jTable1.setModel(model);
jTable1.setAutoCreateColumnsFromModel(true);

此代码的要点是添加一个新行,但新行中的第一个值将被填写。这是关键数字。不幸的是,密钥数与行数无关。

当按下jButton到“Add Row”时,它会抛出此异常。

  

线程中的异常“AWT-EventQueue-0”java.lang.ArrayIndexOutOfBoundsException:837> = 837

这个数字是有意义的,因为837是我按下按钮时jTable的行数。

感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:0)

这会映射到Vector.size()中的DefaultTableModel

int x = jTable1.getRowCount();

这会映射到Vector.get(int index)

java.lang.Object cell = jTable1.getValueAt(x,0);

仔细研究Vector.get(int index)揭示:

  

抛出:ArrayIndexOutOfBoundsException - 索引超出范围(索引< 0 || index> = size())。

现在,因为x == size()引发了异常。

这应解决问题:

java.lang.Object cell = jTable1.getValueAt(--x,0);