Class XTableColumnModel

  • All Implemented Interfaces:
    java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.swing.event.ListSelectionListener, javax.swing.table.TableColumnModel

    public class XTableColumnModel
    extends javax.swing.table.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 Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.Vector<javax.swing.table.TableColumn> allTableColumns
      Array of TableColumn objects in this model.
      • Fields inherited from class javax.swing.table.DefaultTableColumnModel

        changeEvent, columnMargin, columnSelectionAllowed, listenerList, selectionModel, tableColumns, totalColumnWidth
    • Constructor Summary

      Constructors 
      Constructor Description
      XTableColumnModel()
      Creates an extended table column model.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addColumn​(javax.swing.table.TableColumn column)
      Append column to the right of existing columns.
      javax.swing.table.TableColumn getColumn​(int columnIndex, boolean onlyVisible)
      Returns the TableColumn object for the column at columnIndex.
      javax.swing.table.TableColumn getColumnByModelIndex​(int modelColumnIndex)
      Maps the index of the column in the table model at modelColumnIndex to the TableColumn object.
      int getColumnCount​(boolean onlyVisible)
      Returns the total number of columns in this model.
      int getColumnIndex​(java.lang.Object identifier, boolean onlyVisible)
      Returns the position of the first column whose identifier equals identifier.
      java.util.Enumeration<javax.swing.table.TableColumn> getColumns​(boolean onlyVisible)
      Returns an Enumeration of all the columns in the model.
      boolean isColumnVisible​(javax.swing.table.TableColumn aColumn)
      Checks whether the specified column is currently visible.
      void moveColumn​(int columnIndex, int newIndex)
      Moves the column from columnIndex to newIndex.
      void moveColumn​(int columnIndex, int newIndex, boolean onlyVisible)
      Moves the column from columnIndex to newIndex.
      void removeColumn​(javax.swing.table.TableColumn column)
      Removes column from this column model.
      void setAllColumnsVisible()
      Makes all columns in this model visible
      void setColumnVisible​(javax.swing.table.TableColumn column, boolean visible)
      Sets the visibility of the specified TableColumn.
      • Methods inherited from class javax.swing.table.DefaultTableColumnModel

        addColumnModelListener, createSelectionModel, fireColumnAdded, fireColumnMarginChanged, fireColumnMoved, fireColumnRemoved, fireColumnSelectionChanged, getColumn, getColumnCount, getColumnIndex, getColumnIndexAtX, getColumnMargin, getColumnModelListeners, getColumns, getColumnSelectionAllowed, getListeners, getSelectedColumnCount, getSelectedColumns, getSelectionModel, getTotalColumnWidth, propertyChange, recalcWidthCache, removeColumnModelListener, setColumnMargin, setColumnSelectionAllowed, setSelectionModel, valueChanged
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • allTableColumns

        protected java.util.Vector<javax.swing.table.TableColumn> allTableColumns
        Array of TableColumn objects in this model. Holds all column objects, regardless of their visibility
    • Constructor Detail

      • XTableColumnModel

        public XTableColumnModel()
        Creates an extended table column model.
    • Method Detail

      • setColumnVisible

        public void setColumnVisible​(javax.swing.table.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
      • getColumnByModelIndex

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

        public void removeColumn​(javax.swing.table.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 javax.swing.table.TableColumnModel
        Overrides:
        removeColumn in class javax.swing.table.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 javax.swing.table.TableColumnModel
        Overrides:
        moveColumn in class javax.swing.table.DefaultTableColumnModel
        Parameters:
        columnIndex - index of column to be moved
        newIndex - new index of the column
        Throws:
        java.lang.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:
        java.lang.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 java.util.Enumeration<javax.swing.table.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​(java.lang.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:
        java.lang.IllegalArgumentException - if identifier is null, or if no TableColumn has this identifier
        See Also:
        getColumn(int, boolean)
      • getColumn

        public javax.swing.table.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