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?
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.
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);
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...
If you want to notify your JTable
about changes of your data, usetableModel.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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With