Class VisibilityTableColumnModel

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

    public class VisibilityTableColumnModel
    extends javax.swing.table.DefaultTableColumnModel
    implements IVisibilityTableColumnModel
    VisibilityTableColumnModel 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() If you want to take invisible column into account use: getAllColumnCount(), getAllColumns(), getAllColumnIndex(), getAllColumn()
    See Also:
    DefaultTableColumnModel, Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.Vector allTableColumns
      Array of TableColumn objects in this model.
      protected java.util.Vector tableColumnsFixed
      Array of TableColumn objects that cannot change the visibility.
      • Fields inherited from class javax.swing.table.DefaultTableColumnModel

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

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addColumn​(javax.swing.table.TableColumn column)
      Appends aColumn to the end of the tableColumns array.
      void addMouseListener​(javax.swing.JTable table)
      Helper method that adds a mouselistener to the header of a given JTable.
      javax.swing.table.TableColumn getAllColumn​(int columnIndex)
      Returns the TableColumn object for the column at columnIndex.
      int getAllColumnCount()
      Returns the number of columns in the model.
      int getAllColumnIndex​(java.lang.Object identifier)
      Returns the index of the first column in the table whose identifier is equal to identifier, when compared using equals.
      java.util.Enumeration getAllColumns()
      Returns an Enumeration of all the columns in the model.
      boolean isColumnChangeable​(javax.swing.table.TableColumn column)
      Checks whether the specified column can change visibility.
      boolean isColumnVisible​(javax.swing.table.TableColumn aColumn)
      Checks whether the specified column is currently visible.
      void moveColumn​(int columnIndex, int newIndex)
      Moves the column and its header at columnIndex to newIndex.
      void removeColumn​(javax.swing.table.TableColumn column)
      Deletes the TableColumn column from the tableColumns array.
      void setAllColumnsVisible()
      Makes all columns in this model visible
      void setColumnChangeable​(javax.swing.table.TableColumn column, boolean changeable)
      Sets whether this column can change visibility.
      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 allTableColumns
        Array of TableColumn objects in this model. Holds all column objects, regardless of their visibility
      • tableColumnsFixed

        protected java.util.Vector tableColumnsFixed
        Array of TableColumn objects that cannot change the visibility. By default this array is empty
    • Constructor Detail

      • VisibilityTableColumnModel

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

      • addColumn

        public void addColumn​(javax.swing.table.TableColumn column)
        Appends aColumn to the end of the tableColumns array. This method posts a columnAdded event to its listeners.
        Specified by:
        addColumn in interface javax.swing.table.TableColumnModel
        Overrides:
        addColumn in class javax.swing.table.DefaultTableColumnModel
        Parameters:
        column - the TableColumn to be added
        See Also:
        DefaultTableColumnModel.addColumn(javax.swing.table.TableColumn)
      • removeColumn

        public void removeColumn​(javax.swing.table.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.
        Specified by:
        removeColumn in interface javax.swing.table.TableColumnModel
        Overrides:
        removeColumn in class javax.swing.table.DefaultTableColumnModel
        Parameters:
        column - the TableColumn to be removed
        See Also:
        DefaultTableColumnModel.removeColumn(javax.swing.table.TableColumn)
      • moveColumn

        public 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.
        Specified by:
        moveColumn in interface javax.swing.table.TableColumnModel
        Overrides:
        moveColumn in class javax.swing.table.DefaultTableColumnModel
        Parameters:
        columnIndex - the index of column to be moved
        newIndex - index of the column's new location
        Throws:
        java.lang.IllegalArgumentException - if columnIndex or newIndex are not in the valid range
        See Also:
        DefaultTableColumnModel.moveColumn(int, int)
      • getAllColumns

        public java.util.Enumeration getAllColumns()
        Returns an Enumeration of all the columns in the model.
        Specified by:
        getAllColumns in interface IVisibilityTableColumnModel
        Returns:
        an Enumeration of all the columns in the model
      • getAllColumnIndex

        public int getAllColumnIndex​(java.lang.Object identifier)
        Returns the index of the first column in the table whose identifier is equal to identifier, when compared using equals.
        Specified by:
        getAllColumnIndex in interface IVisibilityTableColumnModel
        Parameters:
        identifier - the identifier object
        Returns:
        the index of the first table column whose identifier is equal to identifier
        Throws:
        java.lang.IllegalArgumentException - if identifier is null, or no TableColumn has this identifier
        See Also:
        getAllColumn(int)
      • getAllColumn

        public javax.swing.table.TableColumn getAllColumn​(int columnIndex)
        Returns the TableColumn object for the column at columnIndex.
        Specified by:
        getAllColumn in interface IVisibilityTableColumnModel
        Parameters:
        columnIndex - the index of the desired column
        Returns:
        the TableColumn object for the column at columnIndex
      • 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. This method posts a columnAdded or columnRemoved event to its listeners.
        Specified by:
        setColumnVisible in interface IVisibilityTableColumnModel
        Parameters:
        column - the TableColumn
        visible - its new visibility status
      • setColumnChangeable

        public void setColumnChangeable​(javax.swing.table.TableColumn column,
                                        boolean changeable)
        Sets whether this column can change visibility.
        Specified by:
        setColumnChangeable in interface IVisibilityTableColumnModel
        Parameters:
        column - the TableColumn
        changeable - if true, changing visibility is allowed; otherwise false
      • isColumnChangeable

        public boolean isColumnChangeable​(javax.swing.table.TableColumn column)
        Checks whether the specified column can change visibility.
        Specified by:
        isColumnChangeable in interface IVisibilityTableColumnModel
        Parameters:
        column - column to check
        Returns:
        true if the column can change visibility; otherwise false
      • addMouseListener

        public void addMouseListener​(javax.swing.JTable table)
        Helper method that adds a mouselistener to the header of a given JTable. On right click a popup menu will appear to change the visibility of the columns in the jtable
        Parameters:
        table - the JTable to add the mouselistener to its header