2013-03-26 139 views
0

我的Swing应用程序有几个文本文件和Jtable。当我更新textFileds中的值时,在更新数据后立即在Jtable上显示这些值。 我试过使用tbmodel.fireTableDataChanged();但那没有用。JTable模型数据不显示更新数据

try { 
       String driveID = txtDriverID.getText(); 
       String trnsCompName = (String)cmbTransCompany.getSelectedItem(); 
       String trDriverName = txtName.getText(); 
       String trAddress = txtAddress.getText(); 
       String trDob = txtDOB.getText(); 
       String license = txtLicence.getText(); 
       String telephone = txtTelephone.getText(); 
       PvtTransportDriver pvtDriver = new PvtTransportDriver(driveID, trnsCompName, trDriverName, trAddress, trDob, license, telephone); 
       int res = PvtTransDriverController.updatePvtTransportDriver(pvtDriver); 
       tbmodel = (DefaultTableModel) tblAllPvtDrivers.getModel(); 
       tbmodel.fireTableDataChanged(); 
       if (res > 0) { 
        JOptionPane.showMessageDialog(null, "Updated"); 
       } 
     } catch ( ClassNotFoundException | SQLException ex) { 
       Logger.getLogger(PvtTransDriver.class.getName()).log(Level.SEVERE, null, ex); 
     } 

回答

1

是不是需要拨打fireTableDataChanged。这由TableModel调用。

对于更新表中的行,你可以使用setValueAt

对于添加行,你可以使用addRow

例如:

tbmodel.setValueAt(driveID, 0, 0); 
+0

日Thnx您的回复。但这里不是这种情况。我有单独的方法来使用setValueAt方法插入数据到tabel。我想要做的是当我按下界面上的更新按钮时,文本字段数据应该更新相关数据库字段。表数据来自数据库,而不是来自文本字段。所以我希望在更新数据库后使用文本字段更新表格数据。 – amal 2013-03-26 18:18:16

+0

然后你需要做一个'SQL'' INSERT'或'UPDATE'调用,最好使用PreparedStatement。看到这个[link](http://tutorials.jenkov.com/jdbc/preparedstatement.html) – Reimeus 2013-03-26 19:28:00