The JavaTM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form

Trail: Creating a GUI with JFC/Swing
Lesson: Writing Event Listeners

## How to Write a Table Model Listener

> Each `JTable` object has a table model that holds its data. When a table model listener is registered on the table model, the listener is notified every time the table model's data changes. The `JTable` itself automatically uses a table model listener to make its GUI reflect the current state of the table model. You register a table model listener using the `TableModel` `addTableModelListener` method.

### The Table Model Event API

> The `TableModelListener` interface contains a single method, and thus has no corresponding adapter class. Here is the lone `TableModelListener` method:
> `void tableChanged(TableModelEvent)`
>   Called when the structure of or data in the table has changed.
> The `tableChanged` method's argument is a `TableModelEvent` object that specifies which cells changed, and how in general they changed. You can query the `TableModelEvent` using the following methods:
> `int getFirstRow()`
>   Returns the index of the first row that changed. `TableModelEvent.HEADER_ROW` specifies the table header.
> `int getLastRow()`
>   The last row that changed. Again, `HEADER_ROW` is a possible value.
> `int getColumn()`
>   Returns the index of the column that changed. The constant `TableModelEvent.ALL_COLUMNS` specifies that all the columns might have changed.
> `int getType()`
>   Specifies what happened to the changed cells. The returned value is one of the following: `TableModelEvent.INSERT`, `TableModelEvent.DELETE`, or `TableModelEvent.UPDATE`.
> Also useful is the `getSource` method, which `TableModelEvent` inherits from `EventObject`.

### Examples that Use Table Model Listeners

> The following table lists the examples that use table model listeners.

> Example | Where Described | Notes
> --- | --- | ---
> `TableMap` | Sorting and Otherwise Manipulating Data | A superclass for data-manipulating table models. It implements a table model that sits between a table data model and a `JTable`. The `TableMap` listens for table model events from the data model, and then simply forwards them to its table model listeners (such as the `JTable`).
> `TableSorter` | Sorting and Otherwise Manipulating Data | A sorting table model implemented as a subclass of `TableMap`. In addition to forwarding table model events, the `tableChanged` method keeps track of the number of rows.
> `SharedModelDemo` | -- | Does not implement a table model listener. Instead, it implements a combined list and table model.

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form