Class XTableColumnModel

All Implemented Interfaces:
PropertyChangeListener, Serializable, EventListener, ListSelectionListener, TableColumnModel

public class XTableColumnModel
extends DefaultTableColumnModel
Taken from http://www.stephenkelvin.de/XTableColumnModel/ XTableColumnModel extends the DefaultTableColumnModel . It provides a comfortable way to hide/show columns. Columns keep their positions when hidden and shown again.

In order to work with JTable it cannot add any events to TableColumnModelListener. Therefore hiding a column will result in columnRemoved event and showing it again will notify listeners of a columnAdded, and possibly a columnMoved event. For the same reason the following methods still deal with visible columns only: getColumnCount(), getColumns(), getColumnIndex(), getColumn() There are overloaded versions of these methods that take a parameter onlyVisible which let's you specify whether you want invisible columns taken into account.

See Also:
DefaultTableColumnModel, Serialized Form
  • Field Details

  • Constructor Details

  • Method Details

    • setColumnVisible

      public void setColumnVisible​(TableColumn column, boolean visible)
      Sets the visibility of the specified TableColumn. The call is ignored if the TableColumn is not found in this column model or its visibility status did not change.

      Parameters:
      column - the column to show/hide
      visible - its new visibility status
    • setAllColumnsVisible

      public void setAllColumnsVisible()
      Makes all columns in this model visible
    • getColumnByModelIndex

      public TableColumn getColumnByModelIndex​(int modelColumnIndex)
      Maps the index of the column in the table model at modelColumnIndex to the TableColumn object. There may be multiple TableColumn objects showing the same model column, though this is uncommon.
      Parameters:
      modelColumnIndex - index of column in table model
      Returns:
      the first column, visible or invisible, with the specified index or null if no such column
    • isColumnVisible

      public boolean isColumnVisible​(TableColumn aColumn)
      Checks whether the specified column is currently visible.
      Parameters:
      aColumn - column to check
      Returns:
      visibility of specified column (false if there is no such column at all. [It's not visible, right?])
    • addColumn

      public void addColumn​(TableColumn column)
      Append column to the right of existing columns. Posts columnAdded event.
      Specified by:
      addColumn in interface TableColumnModel
      Overrides:
      addColumn in class DefaultTableColumnModel
      Parameters:
      column - The column to be added
      Throws:
      IllegalArgumentException - if column is null
      See Also:
      removeColumn(javax.swing.table.TableColumn)
    • removeColumn

      public void removeColumn​(TableColumn column)
      Removes column from this column model. Posts columnRemoved event. Will do nothing if the column is not in this model.
      Specified by:
      removeColumn in interface TableColumnModel
      Overrides:
      removeColumn in class DefaultTableColumnModel
      Parameters:
      column - the column to be added
      See Also:
      addColumn(javax.swing.table.TableColumn)
    • moveColumn

      public void moveColumn​(int columnIndex, int newIndex)
      Moves the column from columnIndex to newIndex. Posts columnMoved event. Will not move any columns if columnIndex equals newIndex. This method also posts a columnMoved event to its listeners.
      Specified by:
      moveColumn in interface TableColumnModel
      Overrides:
      moveColumn in class DefaultTableColumnModel
      Parameters:
      columnIndex - index of column to be moved
      newIndex - new index of the column
      Throws:
      IllegalArgumentException - if either oldIndex or newIndex are not in [0, getColumnCount() - 1]
    • moveColumn

      public void moveColumn​(int columnIndex, int newIndex, boolean onlyVisible)
      Moves the column from columnIndex to newIndex. Posts columnMoved event. Will not move any columns if columnIndex equals newIndex. This method also posts a columnMoved event to its listeners if a visible column moves.
      Parameters:
      columnIndex - index of column to be moved
      newIndex - new index of the column
      onlyVisible - true if this should only move a visible column; false to move any column
      Throws:
      IllegalArgumentException - if either oldIndex or newIndex are not in [0, getColumnCount(onlyVisible) - 1]
    • getColumnCount

      public int getColumnCount​(boolean onlyVisible)
      Returns the total number of columns in this model.
      Parameters:
      onlyVisible - if set only visible columns will be counted
      Returns:
      the number of columns in the tableColumns array
      See Also:
      getColumns(boolean)
    • getColumns

      public Enumeration<TableColumn> getColumns​(boolean onlyVisible)
      Returns an Enumeration of all the columns in the model.
      Parameters:
      onlyVisible - if set all invisible columns will be missing from the enumeration.
      Returns:
      an Enumeration of the columns in the model
    • getColumnIndex

      public int getColumnIndex​(Object identifier, boolean onlyVisible)
      Returns the position of the first column whose identifier equals identifier. Position is the index in all visible columns if onlyVisible is true or else the index in all columns.
      Parameters:
      identifier - the identifier object to search for
      onlyVisible - if set searches only visible columns
      Returns:
      the index of the first column whose identifier equals identifier
      Throws:
      IllegalArgumentException - if identifier is null, or if no TableColumn has this identifier
      See Also:
      getColumn(int, boolean)
    • getColumn

      public TableColumn getColumn​(int columnIndex, boolean onlyVisible)
      Returns the TableColumn object for the column at columnIndex.
      Parameters:
      columnIndex - the index of the column desired
      onlyVisible - if set columnIndex is meant to be relative to all visible columns only else it is the index in all columns
      Returns:
      the TableColumn object for the column at columnIndex