javaswingjtablereplicationtablemodel

Clearing data from one JTable is also deleting the another JTable


I am doing an application in Java using Swing. I have two tables, and I have to copy contents from one table to another (Replication). The problem is, if I clear the destination Table rows then my source table rows are also getting deleted.

If I press CopyAll then I will copy all the contents from Table-A to Table-B.

If I press Clear then I have to clear Table-B. But the problem is Table-A is also getting cleared.

For copying:

public void copyAll() {
   TableModel tableAModel = tableA.getModel();
   tableB.setModel(tableAModel);
   repaint();
}

For clearing rows (I am doing for table-B):

public void clearTableB() {
   DefaultTableModel clearTableData = (DefaultTableModel) tableB.getModel();
   clearTableData.setNumRows(0);
}

I think, I am getting problem while copying in copyAll() method. I am getting tableA's Model and then clearing it at clearTable() method.

If the above copyAll() method is wrong, please, tell me how can I implement copyAll(), removeTableB().


Solution

  • You have copied the TableModel between the two tables. This means the two tables share the same data. If you delete the contents of the TableModel, both tables will loose their data.

    You should create two separate TableModel instances, and keep them in sync (for example by using a listener as the TableModel fires events each time the model is updated)