javax.swing.table

## 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

    All Methods Instance Methods Abstract Methods
    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 Detail

    - #### 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(java.lang.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

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.