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.PrintModeJComponent.AccessibleJComponentContainer.AccessibleAWTContainerComponent.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, tableHeaderaccessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWBOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTABORT, 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, valueChangedaddAncestorListener, 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, updateadd, 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, validateTreeaction, 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, transferFocusUpCycleprotected 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 nullprotected 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 JTablepublic void columnShown(ColumnVisibilityChangeEvent pEvent)
columnShown in interface ColumnVisibilityChangeListenerpEvent - event informationpublic void columnHidden(ColumnVisibilityChangeEvent pEvent)
columnHidden in interface ColumnVisibilityChangeListenerpEvent - 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 TableColumnModelListenercolumnAdded in class JTablepEvent - 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 TableModelListenertableChanged in class JTablepEvent - the TableModelEventpublic void mouseClicked(MouseEvent pEvent)
mouseClicked in interface MouseListenerpEvent - the MouseEventpublic void mouseExited(MouseEvent pEvent)
mouseExited in interface MouseListenerpEvent - the MouseEventpublic void mouseEntered(MouseEvent pEvent)
mouseEntered in interface MouseListenerpEvent - the MouseEventpublic void mouseReleased(MouseEvent pEvent)
mouseReleased in interface MouseListenerpEvent - the MouseEventpublic void mousePressed(MouseEvent pEvent)
mousePressed in interface MouseListenerpEvent - the MouseEventCopyright © 2017 Jürgen Zeller (privat). All rights reserved.