Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JTable How to refresh table model after insert delete or update the data.

This is my jTable

private JTable getJTable() {     String[] colName = { "Name", "Email", "Contact No. 1", "Contact No. 2",             "Group", "" };     if (jTable == null) {         jTable = new JTable() {             public boolean isCellEditable(int nRow, int nCol) {                 return false;             }         };     }     DefaultTableModel contactTableModel = (DefaultTableModel) jTable             .getModel();     contactTableModel.setColumnIdentifiers(colName);     jTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);     return jTable; } 

I will call this method to retrieve the data from database and put it into table model

public void setUpTableData() {     DefaultTableModel tableModel = (DefaultTableModel) jTable.getModel();     ArrayList<Contact> list = new ArrayList<Contact>();     if (!con.equals(""))         list = sql.getContactListsByGroup(con);     else         list = sql.getContactLists();     for (int i = 0; i < list.size(); i++) {         String[] data = new String[7];              data[0] = list.get(i).getName();             data[1] = list.get(i).getEmail();             data[2] = list.get(i).getPhone1();             data[3] = list.get(i).getPhone2();             data[4] = list.get(i).getGroup();             data[5] = list.get(i).getId();          tableModel.addRow(data);     }     jTable.setModel(tableModel); } 

Currently I was using this method to refresh the table after updating the table data. I will first clear the table

DefaultTableModel tableModel = (DefaultTableModel) jTable.getModel(); tableModel.setRowCount(0); 

and then restructure the table model again so it will refresh the jTable. But I was thinking is there any best practices or better way to do that?

like image 837
user236501 Avatar asked Jul 05 '10 11:07

user236501


People also ask

How do you clear a JTable row?

If using the DefaultTableModel , just set the row count to zero. This will delete the rows and fire the TableModelEvent to update the GUI. JTable table; … DefaultTableModel model = (DefaultTableModel) table.

How add data from Jtextfield to JTable?

To add the data entered in the JTextFields you will need to register an ActionListener to your add button, in this case jButton1 . To add entries to your table model you could use a mutable model such as DefaultTableModel : DefaultTableModel model = new DefaultTableModel(data, columns);

How get data from database to JTable?

Load the data from the database... String sql="SELECT * FROM hwList"; ResultSet rs = st. executeQuery(sql); Add each row of data to the table model...


1 Answers

If you want to notify your JTable about changes of your data, use
tableModel.fireTableDataChanged()

From the documentation:

Notifies all listeners that all cell values in the table's rows may have changed. The number of rows may also have changed and the JTable should redraw the table from scratch. The structure of the table (as in the order of the columns) is assumed to be the same.

like image 122
Peter Lang Avatar answered Oct 06 '22 12:10

Peter Lang