TableModel (Java SE 25 & JDK 25)
Description: declaration: module: java.desktop, package: javax.swing.table, interface: TableModel
Keywords: javax.swing.table.TableModel interface

# Interface TableModel

All Known Implementing Classes:
  `AbstractTableModel, DefaultTableModel`

public interface TableModel
The `TableModel` interface specifies the methods the `JTable` will use to interrogate a tabular data model.

The `JTable` can be set up to display any data model which implements the `TableModel` interface with a couple of lines of code:

         TableModel myData = new MyTableModel();
         JTable table = new JTable(myData);

For further documentation, see Creating a Table Model in The Java Tutorial.

See Also:
  - `JTable`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addTableModelListener(TableModelListener l)`
  Adds a listener to the list that is notified each time a change to the data model occurs.
  `Class<?>`
  `getColumnClass(int columnIndex)`
  Returns the most specific superclass for all the cell values in the column.
  `int`
  `getColumnCount()`
  Returns the number of columns in the model.
  `String`
  `getColumnName(int columnIndex)`
  Returns the name of the column at `columnIndex`.
  `int`
  `getRowCount()`
  Returns the number of rows in the model.
  `Object`
  `getValueAt(int rowIndex, int columnIndex)`
  Returns the value for the cell at `columnIndex` and `rowIndex`.
  `boolean`
  `isCellEditable(int rowIndex, int columnIndex)`
  Returns true if the cell at `rowIndex` and `columnIndex` is editable.
  `void`
  `removeTableModelListener(TableModelListener l)`
  Removes a listener from the list that is notified each time a change to the data model occurs.
  `void`
  `setValueAt(Object aValue, int rowIndex, int columnIndex)`
  Sets the value in the cell at `columnIndex` and `rowIndex` to `aValue`.

- ## Method Details

  - ### getRowCount

    int getRowCount()
    Returns the number of rows in the model. A `JTable` uses this method to determine how many rows it should display. This method should be quick, as it is called frequently during rendering.
    Returns:
      the number of rows in the model
    See Also:
      - `getColumnCount()`

  - ### getColumnCount

    int getColumnCount()
    Returns the number of columns in the model. A `JTable` uses this method to determine how many columns it should create and display by default.
    Returns:
      the number of columns in the model
    See Also:
      - `getRowCount()`

  - ### getColumnName

    String getColumnName(int columnIndex)
    Returns the name of the column at `columnIndex`. This is used to initialize the table's column header name. Note: this name does not need to be unique; two columns in a table can have the same name.
    Parameters:
      `columnIndex` - the index of the column
    Returns:
      the name of the column

  - ### getColumnClass

    Class<?> getColumnClass(int columnIndex)
    Returns the most specific superclass for all the cell values in the column. This is used by the `JTable` to set up a default renderer and editor for the column.
    Parameters:
      `columnIndex` - the index of the column
    Returns:
      the common ancestor class of the object values in the model.

  - ### isCellEditable

    boolean isCellEditable(int rowIndex, int columnIndex)
    Returns true if the cell at `rowIndex` and `columnIndex` is editable. Otherwise, `setValueAt` on the cell will not change the value of that cell.
    Parameters:
      `rowIndex` - the row whose value to be queried
      `columnIndex` - the column whose value to be queried
    Returns:
      true if the cell is editable
    See Also:
      - `setValueAt(Object, int, int)`

  - ### getValueAt

    Object getValueAt(int rowIndex, int columnIndex)
    Returns the value for the cell at `columnIndex` and `rowIndex`.
    Parameters:
      `rowIndex` - the row whose value is to be queried
      `columnIndex` - the column whose value is to be queried
    Returns:
      the value Object at the specified cell

  - ### setValueAt

    void setValueAt(Object aValue, int rowIndex, int columnIndex)
    Sets the value in the cell at `columnIndex` and `rowIndex` to `aValue`.
    Parameters:
      `aValue` - the new value
      `rowIndex` - the row whose value is to be changed
      `columnIndex` - the column whose value is to be changed
    See Also:
      - `getValueAt(int, int)`
      - `isCellEditable(int, int)`

  - ### addTableModelListener

    void addTableModelListener(TableModelListener l)
    Adds a listener to the list that is notified each time a change to the data model occurs.
    Parameters:
      `l` - the TableModelListener

  - ### removeTableModelListener

    void removeTableModelListener(TableModelListener l)
    Removes a listener from the list that is notified each time a change to the data model occurs.
    Parameters:
      `l` - the TableModelListener