我是java的新手,因为我是vb6 presnelty的移民我将我的员工和旧设备过去15年转移到Java现在我想加载数据是我的Jtable继电器记录的数量我的意思是我想要的测试我的Jtable中的当前记录在哪里,然后将我的记录上传到该行后面我的函数在这里我使用了jtable行数,但是它给了我错误信息
public void LoadLineInJtable(){
int RowNo= jTable1.getModel().getRowCount();
jTable1.setValueAt(jTjournal_submain_no.getText(), RowNo+1, 0);
jTable1.setValueAt(jTjournal_submain_name.getText(), RowNo+1, 1);
}
尝试使用上面的代码时给出了以下错误
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 9 >= 8
at java.util.Vector.elementAt(Vector.java:470)
感谢您的意见。
答案 0 :(得分:3)
您的JTable的行数是RowNum(您应该重命名rowNum以符合Java命名标准),然后尝试在尚未存在的行中设置值。理解JTable行是基于0的,就像Java数组一样,所以你不能操作rowCount-1之外的任何数据。
如果要添加一行,如果您的模型是DefaultTableModel或此类的子项,则必须使用addRow(...)
,否则如果您使用的话,则必须使用自己的添加行方法自定义表模型。
所以你可能想要这样的东西:
public void LoadLineInJtable(){
// get data and put into array or Vector
String[] dataRow = {
jTjournal_submain_no.getText(),
jTjournal_submain_name.getText()
};
// get table model and cast it to a DefaultTableModel
DefaultTableModel model = (DefaultTableModel) jTable1.getModel();
// add row to model
model.addRow(dataRow);
}
答案 1 :(得分:2)
使用它在表格的末尾添加一个新行:
((DefaultTableModel)jTable1.getModel()).addRow(new String[]{"column1","column2"});