2012-10-17 28 views
0

在我的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按下“添加行”时,它会抛出这个异常。

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

数目是有意义,因为837是行JTable中具有的数量时,我的推按钮。

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

+0

这是很清楚的说,它期待数小于837,即836 ...还怎么了用“”,};最后。 – dngfng

+0

此外,它看起来像一个非常糟糕的方式来做你想做的事情 - 你使用的是什么API? – dngfng

+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); 
+0

谢谢!我会试试这个。 –