2014-11-24 139 views
0

我正在嘗試將從表單讀入的數據添加到jTable中。到目前爲止,這是我的,我不知道爲什麼它不會工作。這是代碼:使用按鈕將新數據行添加到jTable單擊

public void fillTable(){ 
     String inputField1 = jTextArea1.getText(); 
     String inputField2 = jTextField8.getText(); 
     String inputField3 = jComboBox1.getSelectedItem().toString(); 
     String inputField4 = jTextField11.getText(); 
     DefaultTableModel model = (DefaultTableModel) jTable2.getModel(); 
     int numRows = jTable2.getRowCount(); 
     for (int i = 0; i <= numRows; i++){ 
      model.setValueAt(inputField1, numRows, 1); 
      model.setValueAt(inputField2, numRows, 2); 
      model.setValueAt(inputField3, numRows, 4); 
      model.setValueAt(inputField4, numRows, 6);  
     } 
     jTable2.setModel(model);  
    } 

我得到的錯誤是:

Exception in thread "AWT-EventQueue=0" java.lang.ClassCastException: my.rcs.accounting.DraftInvoice$5 cannot be cast to groovy.model.DefaultTableModel 

什麼我做錯了,我該如何解決這一問題?

謝謝!

+0

拋出的異常在哪裏?此外,它看起來很奇怪,你正在循環表的每一行,但只將行設置爲'numRows'(這將引發異常BTW)。 – ortis 2014-11-24 10:39:03

+0

你的意思是拋出異常在哪裏?單擊按鈕時調用此方法。即使我不使用for循環,我仍然會得到相同的異常。 – BEE 2014-11-24 10:44:24

+0

我的意思是,代碼中的哪一行。我的猜測是'jTable2.getModel'返回一個'my.rcs.accounting.DraftInvoice'而不是'groovy.model.DefaultTableModel',當你嘗試轉換'DefaultTableModel model =(DefaultTableModel)時會導致異常jTable2.getModel ();'。您應該嘗試使用'DraftInvoice model =(DraftInvoice)jTable2.getModel()'。 – ortis 2014-11-24 10:54:00

回答

1

你能找到代碼創建你的jTable2? 還有你用於DefaultTableModel的確切導入(=包名稱)?我懷疑ClassCastException可能來自這一行: DefaultTableModel model =(DefaultTableModel)jTable2.getModel();

這引出兩個問題:

1) what table model was initially associated with jTable2, it seems to be some inner class my.rcs.accounting.DraftInvoice$5 and the question is - does it inherit from DefaultTableModel 

2) What DefaultTableModel are you expecting, naiively I'd expect it to be javax.swing.table.DefaultTableModel 
+0

jTable2.setModel(新javax.swing.table.DefaultTableModel中( 新對象[] [] { }, 新的String [] { 「描述」, 「日期」, 「數量」, 「價格」,「增值稅「,」總計「 } ) – BEE 2014-11-24 11:01:53

+0

^^這是創建jTable時使用的模型,這是導入代碼:import groovy.model.DefaultTableModel; – BEE 2014-11-24 11:02:51

+1

因此,您應該導入」javax.swing.table.DefaultTableModel「 ,而不是那種時髦的東西...... – 2014-11-24 13:35:34

2

這應該是i而不是numRows

for (int i = 0; i <= numRows; i++) { 
     model.setValueAt(inputField1, i, 1); 
     model.setValueAt(inputField2, i, 2); 
     model.setValueAt(inputField3, i, 4); 
     model.setValueAt(inputField4, i, 6);  
} 
相關問題