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()DefaultTableColumnModel
,
Serialized FormModifier and Type | Field and 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.
|
Constructor and Description |
---|
VisibilityTableColumnModel()
Creates an extended table column model.
|
Modifier and Type | Method and 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.
|
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
protected java.util.Vector allTableColumns
protected java.util.Vector tableColumnsFixed
public VisibilityTableColumnModel()
public void addColumn(javax.swing.table.TableColumn column)
aColumn
to the end of the
tableColumns
array.
This method posts a columnAdded
event to its listeners.addColumn
in interface javax.swing.table.TableColumnModel
addColumn
in class javax.swing.table.DefaultTableColumnModel
column
- the TableColumn
to be addedDefaultTableColumnModel.addColumn(javax.swing.table.TableColumn)
public void removeColumn(javax.swing.table.TableColumn column)
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.removeColumn
in interface javax.swing.table.TableColumnModel
removeColumn
in class javax.swing.table.DefaultTableColumnModel
column
- the TableColumn
to be removedDefaultTableColumnModel.removeColumn(javax.swing.table.TableColumn)
public void moveColumn(int columnIndex, int newIndex)
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.moveColumn
in interface javax.swing.table.TableColumnModel
moveColumn
in class javax.swing.table.DefaultTableColumnModel
columnIndex
- the index of column to be movednewIndex
- index of the column's new locationjava.lang.IllegalArgumentException
- if columnIndex
or
newIndex
are not in the valid rangeDefaultTableColumnModel.moveColumn(int, int)
public int getAllColumnCount()
getAllColumnCount
in interface IVisibilityTableColumnModel
public java.util.Enumeration getAllColumns()
Enumeration
of all the columns in the model.
getAllColumns
in interface IVisibilityTableColumnModel
Enumeration
of all the columns in the modelpublic int getAllColumnIndex(java.lang.Object identifier)
identifier
,
when compared using equals
.
getAllColumnIndex
in interface IVisibilityTableColumnModel
identifier
- the identifier objectidentifier
java.lang.IllegalArgumentException
- if identifier
is null
, or no
TableColumn
has this
identifier
getAllColumn(int)
public javax.swing.table.TableColumn getAllColumn(int columnIndex)
TableColumn
object for the column at
columnIndex
.
getAllColumn
in interface IVisibilityTableColumnModel
columnIndex
- the index of the desired columnTableColumn
object for
the column at columnIndex
public void setColumnVisible(javax.swing.table.TableColumn column, boolean visible)
columnAdded
or columnRemoved
event to its listeners.setColumnVisible
in interface IVisibilityTableColumnModel
column
- the TableColumn
visible
- its new visibility statuspublic void setAllColumnsVisible()
setAllColumnsVisible
in interface IVisibilityTableColumnModel
isColumnVisible(javax.swing.table.TableColumn)
,
setColumnVisible(javax.swing.table.TableColumn, boolean)
public boolean isColumnVisible(javax.swing.table.TableColumn aColumn)
isColumnVisible
in interface IVisibilityTableColumnModel
aColumn
- column to checksetAllColumnsVisible()
,
setColumnVisible(javax.swing.table.TableColumn, boolean)
public void setColumnChangeable(javax.swing.table.TableColumn column, boolean changeable)
setColumnChangeable
in interface IVisibilityTableColumnModel
column
- the TableColumn
changeable
- if true, changing visibility is allowed;
otherwise falsepublic boolean isColumnChangeable(javax.swing.table.TableColumn column)
isColumnChangeable
in interface IVisibilityTableColumnModel
column
- column to checkpublic void addMouseListener(javax.swing.JTable table)
JTable
.
On right click a popup menu will appear to change the visibility of
the columns in the jtabletable
- the JTable
to add the mouselistener to its header