2016-01-19 13 views
0

我新,以Java作爲是從VB6 presnelty移民,我轉向我的員工和老設備,爲過去15年來的Java現在我願意來加載數據isnide我的記錄我的意思是我想測試那裏是我的JTable中的當前記錄,然後上傳我的記錄背後的那條線我作爲每這裏下我用行的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

請注意修改回答。 –

+0

@Hovercraft你的意思,「請注意修改回答」? –

+0

自從我最初介紹以來,我的回答發生了變化。 –

回答

3

你的JTable中的行數ROWNUM(你應該重新命名的rowNum符合Java的命名標準),然後您嘗試在尚不存在的行設定值。理解JTable行是基於0的,就像Java數組一樣,所以你不能操縱任何超出rowCount - 1的數據。

如果你想添加一行,你必須使用addRow(...),如果你的模型是的DefaultTableModel,或這個類的一個孩子,否則,如果你正在使用自定義表格模型使用自己的添加行的方法。

所以,你可能想是這樣的:

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

謝謝你現在工作很好! thxs再次 –

2

使用這種在表的末尾添加新行:

((DefaultTableModel)jTable1.getModel()).addRow(new String[]{"column1","column2"});