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

Module java.desktop
Package javax.swing.table

# Interface TableColumnModel

All Known Implementing Classes:
  `DefaultTableColumnModel`

public interface TableColumnModel
Defines the requirements for a table column model object suitable for use with `JTable`.

See Also:
  - `DefaultTableColumnModel`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addColumn(TableColumn aColumn)`
  Appends `aColumn` to the end of the `tableColumns` array.
  `void`
  `addColumnModelListener(TableColumnModelListener x)`
  Adds a listener for table column model events.
  `TableColumn`
  `getColumn(int columnIndex)`
  Returns the `TableColumn` object for the column at `columnIndex`.
  `int`
  `getColumnCount()`
  Returns the number of columns in the model.
  `int`
  `getColumnIndex(Object columnIdentifier)`
  Returns the index of the first column in the table whose identifier is equal to `identifier`, when compared using `equals`.
  `int`
  `getColumnIndexAtX(int xPosition)`
  Returns the index of the column that lies on the horizontal point, `xPosition`; or -1 if it lies outside the any of the column's bounds.
  `int`
  `getColumnMargin()`
  Returns the width between the cells in each column.
  `Enumeration<TableColumn>`
  `getColumns()`
  Returns an `Enumeration` of all the columns in the model.
  `boolean`
  `getColumnSelectionAllowed()`
  Returns true if columns may be selected.
  `int`
  `getSelectedColumnCount()`
  Returns the number of selected columns.
  `int[]`
  `getSelectedColumns()`
  Returns an array of indices of all selected columns.
  `ListSelectionModel`
  `getSelectionModel()`
  Returns the current selection model.
  `int`
  `getTotalColumnWidth()`
  Returns the total width of all the columns.
  `void`
  `moveColumn(int columnIndex, int newIndex)`
  Moves the column and its header at `columnIndex` to `newIndex`.
  `void`
  `removeColumn(TableColumn column)`
  Deletes the `TableColumn` `column` from the `tableColumns` array.
  `void`
  `removeColumnModelListener(TableColumnModelListener x)`
  Removes a listener for table column model events.
  `void`
  `setColumnMargin(int newMargin)`
  Sets the `TableColumn`'s column margin to `newMargin`.
  `void`
  `setColumnSelectionAllowed(boolean flag)`
  Sets whether the columns in this model may be selected.
  `void`
  `setSelectionModel(ListSelectionModel newModel)`
  Sets the selection model.

- ## Method Details

  - ### addColumn

    void addColumn(TableColumn aColumn)
    Appends `aColumn` to the end of the `tableColumns` array. This method posts a `columnAdded` event to its listeners.
    Parameters:
      `aColumn` - the `TableColumn` to be added
    See Also:
      - `removeColumn(javax.swing.table.TableColumn)`

  - ### removeColumn

    void removeColumn(TableColumn column)
    Deletes the `TableColumn` `column` from the `tableColumns` array. This method will do nothing if `column` is not in the table's column list. This method posts a `columnRemoved` event to its listeners.
    Parameters:
      `column` - the `TableColumn` to be removed
    See Also:
      - `addColumn(javax.swing.table.TableColumn)`

  - ### moveColumn

    void moveColumn(int columnIndex, int newIndex)
    Moves the column and its header at `columnIndex` to `newIndex`. The old column at `columnIndex` will now be found at `newIndex`. The column that used to be at `newIndex` is shifted left or right to make room. This will not move any columns if `columnIndex` equals `newIndex`. This method posts a `columnMoved` event to its listeners.
    Parameters:
      `columnIndex` - the index of column to be moved
      `newIndex` - index of the column's new location
    Throws:
      `IllegalArgumentException` - if `columnIndex` or `newIndex` are not in the valid range

  - ### setColumnMargin

    void setColumnMargin(int newMargin)
    Sets the `TableColumn`'s column margin to `newMargin`. This method posts a `columnMarginChanged` event to its listeners.
    Parameters:
      `newMargin` - the width, in pixels, of the new column margins
    See Also:
      - `getColumnMargin()`

  - ### getColumnCount

    int getColumnCount()
    Returns the number of columns in the model.
    Returns:
      the number of columns in the model

  - ### getColumns

    Enumeration<TableColumn> getColumns()
    Returns an `Enumeration` of all the columns in the model.
    Returns:
      an `Enumeration` of all the columns in the model

  - ### getColumnIndex

    int getColumnIndex(Object columnIdentifier)
    Returns the index of the first column in the table whose identifier is equal to `identifier`, when compared using `equals`.
    Parameters:
      `columnIdentifier` - the identifier object
    Returns:
      the index of the first table column whose identifier is equal to `identifier`
    Throws:
      `IllegalArgumentException` - if `identifier` is `null`, or no `TableColumn` has this `identifier`
    See Also:
      - `getColumn(int)`

  - ### getColumn

    TableColumn getColumn(int columnIndex)
    Returns the `TableColumn` object for the column at `columnIndex`.
    Parameters:
      `columnIndex` - the index of the desired column
    Returns:
      the `TableColumn` object for the column at `columnIndex`

  - ### getColumnMargin

    int getColumnMargin()
    Returns the width between the cells in each column.
    Returns:
      the margin, in pixels, between the cells

  - ### getColumnIndexAtX

    int getColumnIndexAtX(int xPosition)
    Returns the index of the column that lies on the horizontal point, `xPosition`; or -1 if it lies outside the any of the column's bounds. In keeping with Swing's separable model architecture, a TableColumnModel does not know how the table columns actually appear on screen. The visual presentation of the columns is the responsibility of the view/controller object using this model (typically JTable). The view/controller need not display the columns sequentially from left to right. For example, columns could be displayed from right to left to accommodate a locale preference or some columns might be hidden at the request of the user. Because the model does not know how the columns are laid out on screen, the given `xPosition` should not be considered to be a coordinate in 2D graphics space. Instead, it should be considered to be a width from the start of the first column in the model. If the column index for a given X coordinate in 2D space is required, `JTable.columnAtPoint` can be used instead.
    Parameters:
      `xPosition` - width from the start of the first column in the model.
    Returns:
      the index of the column; or -1 if no column is found
    See Also:
      - `JTable.columnAtPoint(java.awt.Point)`

  - ### getTotalColumnWidth

    int getTotalColumnWidth()
    Returns the total width of all the columns.
    Returns:
      the total computed width of all columns

  - ### setColumnSelectionAllowed

    void setColumnSelectionAllowed(boolean flag)
    Sets whether the columns in this model may be selected.
    Parameters:
      `flag` - true if columns may be selected; otherwise false
    See Also:
      - `getColumnSelectionAllowed()`

  - ### getColumnSelectionAllowed

    boolean getColumnSelectionAllowed()
    Returns true if columns may be selected.
    Returns:
      true if columns may be selected
    See Also:
      - `setColumnSelectionAllowed(boolean)`

  - ### getSelectedColumns

    int[] getSelectedColumns()
    Returns an array of indices of all selected columns.
    Returns:
      an array of integers containing the indices of all selected columns; or an empty array if nothing is selected

  - ### getSelectedColumnCount

    int getSelectedColumnCount()
    Returns the number of selected columns.
    Returns:
      the number of selected columns; or 0 if no columns are selected

  - ### setSelectionModel

    void setSelectionModel(ListSelectionModel newModel)
    Sets the selection model.
    Parameters:
      `newModel` - a `ListSelectionModel` object
    See Also:
      - `getSelectionModel()`

  - ### getSelectionModel

    ListSelectionModel getSelectionModel()
    Returns the current selection model.
    Returns:
      a `ListSelectionModel` object
    See Also:
      - `setSelectionModel(javax.swing.ListSelectionModel)`

  - ### addColumnModelListener

    void addColumnModelListener(TableColumnModelListener x)
    Adds a listener for table column model events.
    Parameters:
      `x` - a `TableColumnModelListener` object

  - ### removeColumnModelListener

    void removeColumnModelListener(TableColumnModelListener x)
    Removes a listener for table column model events.
    Parameters:
      `x` - a `TableColumnModelListener` object