This example demonstrates how to detect row and columns being added, deleted, or changed in a table component. To listen for these events, a listener must be added to the JTable's table model. Note: When a column is added, the type of the event is UPDATE.
table.getModel().addTableModelListener(new MyTableModelListener(table));
public class MyTableModelListener implements TableModelListener {
JTable table;
// It is necessary to keep the table since it is not possible
// to determine the table from the event's source
MyTableModelListener(JTable table) {
this.table = table;
}
public void tableChanged(TableModelEvent e) {
int firstRow = e.getFirstRow();
int lastRow = e.getLastRow();
int mColIndex = e.getColumn();
switch (e.getType()) {
case TableModelEvent.INSERT:
// The inserted rows are in the range [firstRow, lastRow]
for (int r=firstRow; r // Row r was inserted
}
break;
case TableModelEvent.UPDATE:
if (firstRow == TableModelEvent.HEADER_ROW) {
if (mColIndex == TableModelEvent.ALL_COLUMNS) {
// A column was added
} else {
// Column mColIndex in header changed
}
} else {
// The rows in the range [firstRow, lastRow] changed
for (int r=firstRow; r // Row r was changed
if (mColIndex == TableModelEvent.ALL_COLUMNS) {
// All columns in the range of rows have changed
} else {
// Column mColIndex changed
}
}
}
break;
case TableModelEvent.DELETE:
// The rows in the range [firstRow, lastRow] changed
for (int r=firstRow; r // Row r was deleted
}
break;
}
}
}