Listening for Changes to the Rows and Columns of a JTable Component

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<=lastRow; 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<=lastRow; 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<=lastRow; r++) { // Row r was deleted } break; } } }

Post a comment

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image. Ignore spaces and be careful about upper and lower case.