![]() |
The Java Developers Almanac 1.4Order this book from Amazon. |
e965. Listening for Changes to the Rows and Columns of a JTable ComponentThis 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 theJTable '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; } } }
e966. Listening for Column-Related Changes in a JTable Component e967. Listening for Clicks on a Column Header in a JTable Component
© 2002 Addison-Wesley. |