public class SortingTable extends JTable implements MouseListener, ColumnVisibilityChangeListener
JTable
with capabilities for sorting the rows and
showing/hiding columns. Sorting is displayed in the table header. It can be
switched there by mouse clicking. With the SHIFT modifier sorting direction
can be changed to descending. With the CONTROL modifier further sorting
criteria can be added.
Sorting support is achieved by using a TableSorter
. In setModel(TableModel)
the TableModel
will be wrapped in a TableSorter
if necessary.
Therefore JTable.getModel()
will always return a TableSorter
object.
If you need the original TableModel
you have to use TableMap.getModel()
,
e.g. table.getModel().getModel()
.
The support for showing/hiding columns uses ColumnVisibilitySupport
.
It assumes that there is a 1:1 mapping from model columns to view columns (each model column must be displayed in
exactly one view column).
Manipulations of the table column model have to be done very carefully since there
might be conflicts with the column showing/hiding. Especially two points have
to be observed: do not try to remove any hidden columns from the column model and do
not break the 1:1 mapping between model and view columns.
JTable.AccessibleJTable, JTable.DropLocation, JTable.PrintMode
JComponent.AccessibleJComponent
Container.AccessibleAWTContainer
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
Modifier and Type | Field and Description |
---|---|
protected ColumnVisibilitySupport |
mColumnVisibilitySupport
Functionality to make columns invisible and visible again.
|
protected TableSorter |
mSorter
Our sorting wrapper around the table model.
|
AUTO_RESIZE_ALL_COLUMNS, AUTO_RESIZE_LAST_COLUMN, AUTO_RESIZE_NEXT_COLUMN, AUTO_RESIZE_OFF, AUTO_RESIZE_SUBSEQUENT_COLUMNS, autoCreateColumnsFromModel, autoResizeMode, cellEditor, cellSelectionEnabled, columnModel, dataModel, defaultEditorsByColumnClass, defaultRenderersByColumnClass, editingColumn, editingRow, editorComp, gridColor, preferredViewportSize, rowHeight, rowMargin, rowSelectionAllowed, selectionBackground, selectionForeground, selectionModel, showHorizontalLines, showVerticalLines, tableHeader
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Constructor and Description |
---|
SortingTable()
Construct new
SortingTable with default table model. |
SortingTable(TableModel pTableModel)
Construct new
SortingTable for given a table model. |
Modifier and Type | Method and Description |
---|---|
void |
addColumn(TableColumn pColumn)
Adds following behaviour and then calls implementation of super.
|
void |
columnAdded(TableColumnModelEvent pEvent)
Callback from TableColumnModel.
|
void |
columnHidden(ColumnVisibilityChangeEvent pEvent)
Whenever a sorted column is hidden the whole sorting is dropped.
|
void |
columnShown(ColumnVisibilityChangeEvent pEvent)
This event is ignored.
|
void |
createDefaultColumnsFromModel()
Forget all invisible columns and (re)create the table columns from the model.
|
boolean[] |
getColumnsVisible()
Get the visibility of all table columns at once.
|
protected TableHeaderRenderer |
getTableHeaderRenderer()
Return the TableCellRenderer to use as TableHeaderRenderer.
|
protected void |
initialize()
Setup everyting.
|
boolean |
isAllColumnsVisible()
Test if all columns are visible.
|
boolean |
isColumnVisible(int pModelIndex)
Test whether a table column is currently visible.
|
void |
mouseClicked(MouseEvent pEvent)
Callback for MouseEvents.
|
void |
mouseEntered(MouseEvent pEvent)
Empty implementation
|
void |
mouseExited(MouseEvent pEvent)
Empty implementation
|
void |
mousePressed(MouseEvent pEvent)
Empty implementation
|
void |
mouseReleased(MouseEvent pEvent)
Empty implementation
|
protected void |
redrawTableHeaders()
Redraw all TableHeaders according to current sorting.
|
void |
setAllColumnsVisible()
Make all table columns visible.
|
void |
setColumnsVisible(boolean[] pVisible)
Set the visibility of all table columns at once.
|
void |
setColumnVisible(int pModelIndex,
boolean pVisible)
Show or hide a table column.
|
void |
setModel(TableModel pModel)
Adds following behaviour and then calls implementation of super.
|
void |
tableChanged(TableModelEvent pEvent)
Adds following behaviour and then calls implementation of super.
|
protected TableSorter |
wrapModel(TableModel pTableModel)
Puts a wrapper around the given table model.
|
addColumnSelectionInterval, addNotify, addRowSelectionInterval, changeSelection, clearSelection, columnAtPoint, columnMarginChanged, columnMoved, columnRemoved, columnSelectionChanged, configureEnclosingScrollPane, convertColumnIndexToModel, convertColumnIndexToView, convertRowIndexToModel, convertRowIndexToView, createDefaultColumnModel, createDefaultDataModel, createDefaultEditors, createDefaultRenderers, createDefaultSelectionModel, createDefaultTableHeader, createScrollPaneForTable, doLayout, editCellAt, editCellAt, editingCanceled, editingStopped, getAccessibleContext, getAutoCreateColumnsFromModel, getAutoCreateRowSorter, getAutoResizeMode, getCellEditor, getCellEditor, getCellRect, getCellRenderer, getCellSelectionEnabled, getColumn, getColumnClass, getColumnCount, getColumnModel, getColumnName, getColumnSelectionAllowed, getDefaultEditor, getDefaultRenderer, getDragEnabled, getDropLocation, getDropMode, getEditingColumn, getEditingRow, getEditorComponent, getFillsViewportHeight, getGridColor, getIntercellSpacing, getModel, getPreferredScrollableViewportSize, getPrintable, getRowCount, getRowHeight, getRowHeight, getRowMargin, getRowSelectionAllowed, getRowSorter, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedColumn, getSelectedColumnCount, getSelectedColumns, getSelectedRow, getSelectedRowCount, getSelectedRows, getSelectionBackground, getSelectionForeground, getSelectionModel, getShowHorizontalLines, getShowVerticalLines, getSurrendersFocusOnKeystroke, getTableHeader, getToolTipText, getUI, getUIClassID, getUpdateSelectionOnSort, getValueAt, initializeLocalVars, isCellEditable, isCellSelected, isColumnSelected, isEditing, isRowSelected, moveColumn, paramString, prepareEditor, prepareRenderer, print, print, print, print, print, processKeyBinding, removeColumn, removeColumnSelectionInterval, removeEditor, removeNotify, removeRowSelectionInterval, resizeAndRepaint, rowAtPoint, selectAll, setAutoCreateColumnsFromModel, setAutoCreateRowSorter, setAutoResizeMode, setCellEditor, setCellSelectionEnabled, setColumnModel, setColumnSelectionAllowed, setColumnSelectionInterval, setDefaultEditor, setDefaultRenderer, setDragEnabled, setDropMode, setEditingColumn, setEditingRow, setFillsViewportHeight, setGridColor, setIntercellSpacing, setPreferredScrollableViewportSize, setRowHeight, setRowHeight, setRowMargin, setRowSelectionAllowed, setRowSelectionInterval, setRowSorter, setSelectionBackground, setSelectionForeground, setSelectionMode, setSelectionModel, setShowGrid, setShowHorizontalLines, setShowVerticalLines, setSurrendersFocusOnKeystroke, setTableHeader, setUI, setUpdateSelectionOnSort, setValueAt, sizeColumnsToFit, sizeColumnsToFit, sorterChanged, unconfigureEnclosingScrollPane, updateUI, valueChanged
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
protected TableSorter mSorter
JTable.getModel()
and cast it.protected ColumnVisibilitySupport mColumnVisibilitySupport
public SortingTable()
SortingTable
with default table model.public SortingTable(TableModel pTableModel)
SortingTable
for given a table model.
The table model will be wrapped in a TableSorter
.pTableModel
- ordinary table model, may be null
protected void initialize()
protected TableHeaderRenderer getTableHeaderRenderer()
protected void redrawTableHeaders()
public void createDefaultColumnsFromModel()
ColumnVisibilitySupport
about all changes
to the table column model, even those for which no event is generated.createDefaultColumnsFromModel
in class JTable
public void columnShown(ColumnVisibilityChangeEvent pEvent)
columnShown
in interface ColumnVisibilityChangeListener
pEvent
- event informationpublic void columnHidden(ColumnVisibilityChangeEvent pEvent)
columnHidden
in interface ColumnVisibilityChangeListener
pEvent
- event informationpublic boolean isColumnVisible(int pModelIndex)
pModelIndex
- column index in the table modeltrue
if table column is visiblepublic void setColumnVisible(int pModelIndex, boolean pVisible)
pModelIndex
- column index in the table modelpVisible
- true
to make the column visiblepublic boolean[] getColumnsVisible()
boolean[]
. There is an
entry in this array for each table model column. true
means the respective column is visible. false
makes the
column hidden.public void setColumnsVisible(boolean[] pVisible)
boolean[]
. There must be an
entry in this array for each table model column. true
means the respective column is visible. false
makes the
column hidden.pVisible
- visiblity information for each column in the table modelIllegalArgumentException
- if visible is null
or has a different number of entries than the table modelpublic void setAllColumnsVisible()
public boolean isAllColumnsVisible()
true
if there are currently no invisible columnspublic void addColumn(TableColumn pColumn)
public void columnAdded(TableColumnModelEvent pEvent)
columnAdded
in interface TableColumnModelListener
columnAdded
in class JTable
pEvent
- The TableColumnModelEventpublic void setModel(TableModel pModel)
wrapModel(TableModel)
, if given table
model is not already an instance of TableSorter
.protected TableSorter wrapModel(TableModel pTableModel)
TableSorter
).
This implementation wraps the table model in a TableSorter
.
In derived classes this method can be overridden to provide different wrappings.
pTableModel
- table model to be wrappedpublic void tableChanged(TableModelEvent pEvent)
tableChanged
in interface TableModelListener
tableChanged
in class JTable
pEvent
- the TableModelEventpublic void mouseClicked(MouseEvent pEvent)
mouseClicked
in interface MouseListener
pEvent
- the MouseEventpublic void mouseExited(MouseEvent pEvent)
mouseExited
in interface MouseListener
pEvent
- the MouseEventpublic void mouseEntered(MouseEvent pEvent)
mouseEntered
in interface MouseListener
pEvent
- the MouseEventpublic void mouseReleased(MouseEvent pEvent)
mouseReleased
in interface MouseListener
pEvent
- the MouseEventpublic void mousePressed(MouseEvent pEvent)
mousePressed
in interface MouseListener
pEvent
- the MouseEventCopyright © 2017 Jürgen Zeller (privat). All rights reserved.