Class JXTable
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JTable
-
- org.jdesktop.swingx.JXTable
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
,java.util.EventListener
,javax.accessibility.Accessible
,javax.swing.event.CellEditorListener
,javax.swing.event.ListSelectionListener
,javax.swing.event.RowSorterListener
,javax.swing.event.TableColumnModelListener
,javax.swing.event.TableModelListener
,javax.swing.Scrollable
,TableColumnModelExtListener
- Direct Known Subclasses:
JXTreeTable
public class JXTable extends javax.swing.JTable implements TableColumnModelExtListener
A JXTable is a JTable with built-in support for row sorting, filtering, and highlighting, column visibility and a special popup control on the column header for quick access to table configuration. You can instantiate a JXTable just as you would a JTable, using a TableModel. However, a JXTable automatically wraps TableColumns inside a TableColumnExt instance. TableColumnExt supports visibility, sortability, and prototype values for column sizing, none of which are available in TableColumn. You can retrieve the TableColumnExt instance for a column using
getColumnExt(Object)
orgetColumnExt(int colnumber)
.A JXTable is, by default, sortable by clicking on column headers; each subsequent click on a header reverses the order of the sort, and a sort arrow icon is automatically drawn on the header. Sorting can be disabled using
setSortable(boolean)
. Sorting on columns is handled by a Sorter instance which contains a Comparator used to compare values in two rows of a column. You can replace the Comparator for a given column by usinggetColumnExt("column").setComparator(customComparator)
Columns can be hidden or shown by setting the visible property on the TableColumnExt using
TableColumnExt.setVisible(boolean)
. Columns can also be shown or hidden from the column control popup.The column control popup is triggered by an icon drawn to the far right of the column headers, above the table's scrollbar (when installed in a JScrollPane). The popup allows the user to select which columns should be shown or hidden, as well as to pack columns and turn on horizontal scrolling. To show or hide the column control, use the
setColumnControlVisible(boolean show)
method.Rows can be filtered from a JXTable using a Filter class and a FilterPipeline. One assigns a FilterPipeline to the table using
setFilters(FilterPipeline)
. Filtering hides, but does not delete or permanently remove rows from a JXTable. Filters are used to provide sorting to the table--rows are not removed, but the table is made to believe rows in the model are in a sorted order.One can automatically highlight certain rows in a JXTable by attaching Highlighters with setHighlighters(Highlighter) method. An example would be a Highlighter that colors alternate rows in the table for readability. The HighlighterFactory has several methods to return appropriate Highlighters for this use-case.s Again, like Filters, Highlighters can be chained together in a CompoundHighlighter to achieve more interesting effects.
You can resize all columns, selected columns, or a single column using the methods like
packAll()
. Packing combines several other aspects of a JXTable. If horizontal scrolling is enabled usingsetHorizontalScrollEnabled(boolean)
, then the scrollpane will allow the table to scroll right-left, and columns will be sized to their preferred size. To control the preferred sizing of a column, you can provide a prototype value for the column in the TableColumnExt usingTableColumnExt.setPrototypeValue(Object)
. The prototype is used as an indicator of the preferred size of the column. This can be useful if some data in a given column is very long, but where the resize algorithm would normally not pick this up.JXTable guarantees to delegate creation and configuration of TableColumnExt to a ColumnFactory. By default, the application-wide shared ColumnFactory is used. You can install a custom ColumnFactory, either application-wide by
ColumnFactory.setInstance(ColumnFactory)
or per table instance bysetColumnFactory(ColumnFactory)
.Last, you can also provide searches on a JXTable using the Searchable property.
Keys/Actions registered with this component:
- "find" - open an appropriate search widget for searching cell content. The default action registeres itself with the SearchFactory as search target.
- "print" - print the table
-
HORIZONTALSCROLL_ACTION_COMMAND
- toggle the horizontal scrollbar -
PACKSELECTED_ACTION_COMMAND
- resize the selected column to fit the widest cell content -
PACKALL_ACTION_COMMAND
- resize all columns to fit the widest cell content in each column
Key bindings.
- "control F" - bound to actionKey "find".
Client Properties.
-
MATCH_HIGHLIGHTER
- set to Boolean.TRUE to use a SearchHighlighter to mark a cell as matching.
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
JXTable.BooleanEditor
The default editor forBoolean
types.static class
JXTable.GenericEditor
Default editor registered forObject
.static class
JXTable.NumberEditor
Editor forNumber
s.protected static class
JXTable.TableAdapter
-
Nested classes/interfaces inherited from class javax.swing.JTable
javax.swing.JTable.AccessibleJTable, javax.swing.JTable.DropLocation, javax.swing.JTable.PrintMode
-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description protected CompoundHighlighter
compoundHighlighter
The CompoundHighlighter for the table.protected ComponentAdapter
dataAdapter
The ComponentAdapter for model data access.protected org.jdesktop.swingx.JXTable.CellEditorRemover
editorRemover
protected FilterPipeline
filters
The FilterPipeline for the table.static java.lang.String
FOCUS_NEXT_COMPONENT
static java.lang.String
FOCUS_PREVIOUS_COMPONENT
static java.lang.String
HORIZONTALSCROLL_ACTION_COMMAND
Identifier of show horizontal scroll action, used in JXTable'sActionMap
.protected boolean
isXTableRowHeightSet
Flag to distinguish internal settings of rowheight from client code settings.static java.lang.String
MATCH_HIGHLIGHTER
key for client property to use SearchHighlighter as match marker.static java.lang.String
PACKALL_ACTION_COMMAND
Identifier of pack table action, used in JXTable'sActionMap
.static java.lang.String
PACKSELECTED_ACTION_COMMAND
Identifier of pack selected column action, used in JXTable'sActionMap
.protected Highlighter
resetDefaultTableCellRendererHighlighter
The Highlighter used to hack around DefaultTableCellRenderer's color memory.protected Searchable
searchable
property to control search behaviour.protected SelectionMapper
selectionMapper
The handler for mapping view/model coordinates of row selection.static java.lang.String
UIPREFIX
The prefix marker to find table related properties in theResourceBundle
.static java.lang.String
USE_DTCR_COLORMEMORY_HACK
The key for the client property deciding about whether the color memory hack for DefaultTableCellRenderer should be used.-
Fields inherited from class javax.swing.JTable
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
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description JXTable()
Instantiates a JXTable with a default table model, no data.JXTable(int numRows, int numColumns)
Instantiates a JXTable for a given number of columns and rows.JXTable(java.lang.Object[][] rowData, java.lang.Object[] columnNames)
Instantiates a JXTable with data in a array or rows and column names.JXTable(java.util.Vector rowData, java.util.Vector columnNames)
Instantiates a JXTable with data in a vector or rows and column names.JXTable(javax.swing.table.TableModel dm)
Instantiates a JXTable with a specific table model.JXTable(javax.swing.table.TableModel dm, javax.swing.table.TableColumnModel cm)
Instantiates a JXTable with a specific table model.JXTable(javax.swing.table.TableModel dm, javax.swing.table.TableColumnModel cm, javax.swing.ListSelectionModel sm)
Instantiates a JXTable with a specific table model, column model, and selection model.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addHighlighter(Highlighter highlighter)
Appends aHighlighter
to the end of the list of usedHighlighter
s.protected void
adjustComponentOrientation(java.awt.Component stamp)
Adjusts theComponent
's orientation to thisJXTable
's CO if appropriate.protected void
adminSetRowHeight(int rowHeight)
Sets the rowHeight for all rows to the given value.void
columnMarginChanged(javax.swing.event.ChangeEvent e)
void
columnPropertyChange(java.beans.PropertyChangeEvent event)
Notifies listeners about property changes of contained columns.void
columnRemoved(javax.swing.event.TableColumnModelEvent e)
overridden to remove the interactive sorter if the sorted column is no longer contained in the ColumnModel.void
columnSelectionChanged(javax.swing.event.ListSelectionEvent e)
protected void
configureColumnControl()
Configures the upper trailing corner of an enclosingJScrollPane
.protected void
configureEnclosingScrollPane()
Configures the enclosingJScrollPane
.int
convertRowIndexToModel(int row)
Convert row index from view coordinates to model coordinates accounting for the presence of sorters and filters.int
convertRowIndexToView(int row)
Convert row index from model coordinates to view coordinates accounting for the presence of sorters and filters.protected javax.swing.JComponent
createDefaultColumnControl()
Creates the default column control used by this table.protected javax.swing.table.TableColumnModel
createDefaultColumnModel()
void
createDefaultColumnsFromModel()
Creates, configures and adds defaultTableColumn
s for columns in this table'sTableModel
.protected void
createDefaultEditors()
Creates default cell editors for objects, numbers, and boolean values.protected void
createDefaultRenderers()
Creates default cell renderers forObject
s,Number
s,Date
s,Boolean
s, andIcon/Image/
s.protected javax.swing.table.JTableHeader
createDefaultTableHeader()
protected javax.swing.event.ChangeListener
createHighlighterChangeListener()
Creates and returns the ChangeListener observing Highlighters.protected TableRolloverController<JXTable>
createLinkController()
protected PipelineListener
createPipelineListener()
creates the listener for changes in filters.protected RolloverProducer
createRolloverProducer()
creates and returns the RolloverProducer to use.void
doLayout()
Layouts column width.boolean
editCellAt(int row, int column, java.util.EventObject e)
boolean
getAutoCreateColumnsFromModel()
javax.swing.table.TableCellRenderer
getCellRenderer(int row, int column)
javax.swing.table.TableColumn
getColumn(int viewColumnIndex)
Returns theTableColumn
at view positioncolumnIndex
.javax.swing.JComponent
getColumnControl()
Returns the component used as column control.int
getColumnCount(boolean includeHidden)
Returns the number of contained columns.TableColumnExt
getColumnExt(int viewColumnIndex)
Returns theTableColumnExt
at view positioncolumnIndex
.TableColumnExt
getColumnExt(java.lang.Object identifier)
Returns the firstTableColumnExt
with the givenidentifier
.ColumnFactory
getColumnFactory()
Returns the ColumnFactory.int
getColumnMargin()
Returns the margin between columns.java.util.List<javax.swing.table.TableColumn>
getColumns()
Returns aList
of visibleTableColumn
s.java.util.List<javax.swing.table.TableColumn>
getColumns(boolean includeHidden)
Returns aList
of containedTableColumn
s.protected ComponentAdapter
getComponentAdapter()
protected ComponentAdapter
getComponentAdapter(int row, int column)
Convenience to access a configured ComponentAdapter.protected CompoundHighlighter
getCompoundHighlighter()
Returns the CompoundHighlighter assigned to the table, null if none.boolean
getFillsViewportHeight()
Returns the flag which controls the scrollableTracksViewportHeight property.protected PipelineListener
getFilterPipelineListener()
returns the listener for changes in filters.FilterPipeline
getFilters()
Returns the FilterPipeline for the table.protected javax.swing.event.ChangeListener
getHighlighterChangeListener()
Returns theChangeListener
to use with highlighters.Highlighter[]
getHighlighters()
Returns theHighlighter
s used by this table.protected TableRolloverController<JXTable>
getLinkController()
javax.swing.table.TableCellRenderer
getNewDefaultRenderer(java.lang.Class columnClass)
Returns a new instance of the default renderer for the specified class.java.awt.Dimension
getPreferredScrollableViewportSize()
int
getRowCount()
Returns the row count in the table; if filters are applied, this is the filtered row count.protected SizeSequenceMapper
getRowModelMapper()
Returns the mapper used synch individual rowHeights in view/model coordinates.boolean
getScrollableTracksViewportHeight()
boolean
getScrollableTracksViewportWidth()
Searchable
getSearchable()
SelectionMapper
getSelectionMapper()
int
getSelectionMode()
Returns the selection mode used by this table's selection model.protected SortController
getSortController()
returns the currently active SortController.javax.swing.table.TableColumn
getSortedColumn()
SortOrder
getSortOrder(int columnIndex)
Returns the SortOrder of the given column.SortOrder
getSortOrder(java.lang.Object identifier)
Returns the SortOrder of the given column.java.lang.String
getStringAt(int row, int column)
Returns the string representation of the cell value at the given position.protected java.lang.String
getUIString(java.lang.String key)
Returns a potentially localized value from the UIManager.protected java.lang.String
getUIString(java.lang.String key, java.util.Locale locale)
Returns a potentially localized value from the UIManager for the given locale.java.lang.Object
getValueAt(int row, int column)
Overridden to account for row index mapping.int
getVisibleColumnCount()
Returns the preferred number of columns to show in theJScrollPane
.int
getVisibleRowCount()
Returns the preferred number of rows to show in aJScrollPane
.protected void
initializeColumnPreferredWidth(javax.swing.table.TableColumn column)
Initialize the width related properties of the specified column.protected void
initializeColumnWidths()
Initialize the width related properties of all contained TableColumns, both visible and hidden.boolean
isAutoStartEditOnKeyStroke()
Returns the autoStartsEdit property.boolean
isCellEditable(int row, int column)
Returns true if the cell atrow
andcolumn
is editable.boolean
isColumnControlVisible()
Returns the column control visible property.protected boolean
isDataChanged(javax.swing.event.TableModelEvent e)
Convenience method to detect dataChanged table event type.boolean
isEditable()
Returns the editable property of theJXTable
as a whole.boolean
isFocusCycleRoot()
boolean
isHorizontalScrollEnabled()
Returns the current setting for horizontal scrolling.boolean
isRolloverEnabled()
Returns the rolloverEnabled property.boolean
isRowHeightEnabled()
Returns a boolean to indicate whether individual row height is enabled.boolean
isSortable()
Returns the table's sortable property.protected boolean
isSortable(int columnIndex)
Decides if the column at columnIndex can be interactively sorted.protected boolean
isSortable(java.lang.Object identifier)
Decides if the column with identifier can be interactively sorted.protected boolean
isStructureChanged(javax.swing.event.TableModelEvent e)
Convenience method to detect a structureChanged table event type.boolean
isTerminateEditOnFocusLost()
Returns the property which determines the edit termination behaviour on focus lost.protected boolean
isUpdate(javax.swing.event.TableModelEvent e)
Convenience method to detect update table event type.void
packAll()
Resizes all columns to fit their content.void
packColumn(int column, int margin)
Packs an indivudal column in the table.void
packColumn(int column, int margin, int max)
Packs an indivual column in the table to less than or equal to the maximum witdth.void
packSelected()
Resizes the lead column to fit its content.void
packTable(int margin)
Packs all the columns to their optimal size.java.awt.Component
prepareEditor(javax.swing.table.TableCellEditor editor, int row, int column)
java.awt.Component
prepareRenderer(javax.swing.table.TableCellRenderer renderer, int row, int column)
Returns the decoratedComponent
used as a stamp to render the specified cell.void
removeEditor()
Overridden with backport from Mustang fix for #4684090, #4887999.void
removeHighlighter(Highlighter highlighter)
Removes the given Highlighter.void
removeNotify()
protected void
resetDefaultTableCellRendererColors(java.awt.Component renderer, int row, int column)
Method to apply a hack around DefaultTableCellRenderer "color memory" (Issue #258-swingx).void
resetSortOrder()
Resets sorting of all columns.int
rowAtPoint(java.awt.Point point)
void
scrollCellToVisible(int row, int column)
Scrolls to make the cell at row and column visible.void
scrollColumnToVisible(int column)
Scrolls horizontally to make the given column visible.void
scrollRowToVisible(int row)
Scrolls vertically to make the given row visible.void
setAutoResizeMode(int mode)
void
setAutoStartEditOnKeyStroke(boolean autoStart)
Sets the autoStartsEdit property.void
setColumnControl(javax.swing.JComponent columnControl)
Sets the component used as column control.void
setColumnControlVisible(boolean visible)
Sets the column control visible property.void
setColumnFactory(ColumnFactory columnFactory)
Sets theColumnFactory
to use for column creation and configuration.void
setColumnMargin(int value)
Sets the margin between columns.void
setColumnSequence(java.lang.Object[] identifiers)
Reorders the columns in the sequence given array.void
setComponentOrientation(java.awt.ComponentOrientation o)
Sets the language-sensitive orientation that is to be used to order the elements or text within this component.void
setEditable(boolean editable)
Sets the editable property.void
setFillsViewportHeight(boolean fillsViewportHeight)
Sets the flag which controls the scrollableTracksViewportHeight property.void
setFilters(FilterPipeline pipeline)
Sets the FilterPipeline for filtering table rows, maybe null to remove all previously applied filters.void
setGridColor(java.awt.Color gridColor)
void
setHighlighters(Highlighter... highlighters)
Sets theHighlighter
s to the table, replacing any old settings.void
setHorizontalScrollEnabled(boolean enabled)
Sets the enablement of enhanced horizontal scrolling.void
setLocale(java.util.Locale locale)
void
setModel(javax.swing.table.TableModel newModel)
void
setPreferredScrollableViewportSize(java.awt.Dimension size)
void
setRolloverEnabled(boolean rolloverEnabled)
Property to enable/disable rollover support.void
setRowHeight(int rowHeight)
void
setRowHeight(int row, int rowHeight)
void
setRowHeightEnabled(boolean enabled)
Sets enablement of individual rowHeight support.void
setSearchable(Searchable searchable)
sets the Searchable for this editor.void
setSelectionBackground(java.awt.Color selectionBackground)
void
setSelectionForeground(java.awt.Color selectionForeground)
void
setSelectionModel(javax.swing.ListSelectionModel newModel)
Overridden to update selectionMappervoid
setShowGrid(boolean showGrid)
void
setShowGrid(boolean showHorizontalLines, boolean showVerticalLines)
Convenience to set both grid line visibility and default margin for horizontal/vertical lines.void
setSortable(boolean sortable)
Sets "sortable" property indicating whether or not this table supports sortable columns.void
setSortOrder(int columnIndex, SortOrder sortOrder)
Sorts the table by the given column using SortOrder.void
setSortOrder(java.lang.Object identifier, SortOrder sortOrder)
Sorts the table by the given column using the SortOrder.void
setTerminateEditOnFocusLost(boolean terminate)
Sets the property to determine whether an ongoing edit should be terminated if the focus is moved to somewhere outside of the table.void
setValueAt(java.lang.Object aValue, int row, int column)
Overridden to account for row index mapping.void
setVisibleColumnCount(int visibleColumnCount)
Sets the preferred number of Columns to show in aJScrollPane
.void
setVisibleRowCount(int visibleRowCount)
Sets the preferred number of rows to show in aJScrollPane
.protected boolean
shouldSortOnChange(javax.swing.event.TableModelEvent e)
Returns a boolean to indicate whether the table should be resorted after receiving the given event.void
tableChanged(javax.swing.event.TableModelEvent e)
additionally updates filtered state.void
toggleSortOrder(int columnIndex)
Toggles the sort order of the column at columnIndex.void
toggleSortOrder(java.lang.Object identifier)
Toggles the sort order of the column with identifier.void
transferFocus()
void
transferFocusBackward()
protected void
unconfigureColumnControl()
/** Unconfigures the upper trailing corner of an enclosingJScrollPane
.protected void
unconfigureEnclosingScrollPane()
Unconfigures the enclosingJScrollPane
.protected void
updateColumnControlUI()
Updates the ui of the columnControl if appropriate.protected void
updateColumnUI(javax.swing.table.TableColumn column)
Updates TableColumn after updateUI changes.protected void
updateHighlighterUI()
Updates highlighter afterupdateUI
changes.protected void
updateHorizontalAction()
Synchs selected state of horizontal scrollingAction
to enablement of enhanced auto-resize behaviour.protected void
updateLocaleActionState(java.lang.String key, java.util.Locale locale)
Updates locale-dependent state of action registered with key inActionMap
.protected void
updateLocaleState(java.util.Locale locale)
Updates locale-dependent state to the givenLocale
.protected void
updateOnFilterContentChanged()
method called on change notification from filterpipeline.protected void
updateRowHeightUI(boolean respectRowSetFlag)
Auto-adjusts rowHeight to something more pleasing then the default.void
updateUI()
protected void
updateViewSizeSequence()
Called if individual row height mapping need to be updated.-
Methods inherited from class javax.swing.JTable
addColumn, addColumnSelectionInterval, addNotify, addRowSelectionInterval, changeSelection, clearSelection, columnAdded, columnAtPoint, columnMoved, convertColumnIndexToModel, convertColumnIndexToView, createDefaultDataModel, createDefaultSelectionModel, createScrollPaneForTable, editCellAt, editingCanceled, editingStopped, getAccessibleContext, getAutoCreateRowSorter, getAutoResizeMode, getCellEditor, getCellEditor, getCellRect, getCellSelectionEnabled, getColumn, getColumnClass, getColumnCount, getColumnModel, getColumnName, getColumnSelectionAllowed, getDefaultEditor, getDefaultRenderer, getDragEnabled, getDropLocation, getDropMode, getEditingColumn, getEditingRow, getEditorComponent, getGridColor, getIntercellSpacing, getModel, getPrintable, getRowHeight, getRowHeight, getRowMargin, getRowSelectionAllowed, getRowSorter, getScrollableBlockIncrement, getScrollableUnitIncrement, getSelectedColumn, getSelectedColumnCount, getSelectedColumns, getSelectedRow, getSelectedRowCount, getSelectedRows, getSelectionBackground, getSelectionForeground, getSelectionModel, getShowHorizontalLines, getShowVerticalLines, getSurrendersFocusOnKeystroke, getTableHeader, getToolTipText, getUI, getUIClassID, getUpdateSelectionOnSort, initializeLocalVars, isCellSelected, isColumnSelected, isEditing, isRowSelected, moveColumn, paramString, print, print, print, print, print, processKeyBinding, removeColumn, removeColumnSelectionInterval, removeRowSelectionInterval, resizeAndRepaint, selectAll, setAutoCreateColumnsFromModel, setAutoCreateRowSorter, setCellEditor, setCellSelectionEnabled, setColumnModel, setColumnSelectionAllowed, setColumnSelectionInterval, setDefaultEditor, setDefaultRenderer, setDragEnabled, setDropMode, setEditingColumn, setEditingRow, setIntercellSpacing, setRowMargin, setRowSelectionAllowed, setRowSelectionInterval, setRowSorter, setSelectionMode, setShowHorizontalLines, setShowVerticalLines, setSurrendersFocusOnKeystroke, setTableHeader, setUI, setUpdateSelectionOnSort, sizeColumnsToFit, sizeColumnsToFit, sorterChanged, valueChanged
-
Methods inherited from class javax.swing.JComponent
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
-
Methods inherited from class java.awt.Container
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, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
-
Methods inherited from class java.awt.Component
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, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocusUpCycle
-
-
-
-
Field Detail
-
FOCUS_PREVIOUS_COMPONENT
public static final java.lang.String FOCUS_PREVIOUS_COMPONENT
- See Also:
- Constant Field Values
-
FOCUS_NEXT_COMPONENT
public static final java.lang.String FOCUS_NEXT_COMPONENT
- See Also:
- Constant Field Values
-
HORIZONTALSCROLL_ACTION_COMMAND
public static final java.lang.String HORIZONTALSCROLL_ACTION_COMMAND
Identifier of show horizontal scroll action, used in JXTable'sActionMap
.- See Also:
- Constant Field Values
-
PACKALL_ACTION_COMMAND
public static final java.lang.String PACKALL_ACTION_COMMAND
Identifier of pack table action, used in JXTable'sActionMap
.- See Also:
- Constant Field Values
-
PACKSELECTED_ACTION_COMMAND
public static final java.lang.String PACKSELECTED_ACTION_COMMAND
Identifier of pack selected column action, used in JXTable'sActionMap
.- See Also:
- Constant Field Values
-
UIPREFIX
public static final java.lang.String UIPREFIX
The prefix marker to find table related properties in theResourceBundle
.- See Also:
- Constant Field Values
-
MATCH_HIGHLIGHTER
public static final java.lang.String MATCH_HIGHLIGHTER
key for client property to use SearchHighlighter as match marker.- See Also:
- Constant Field Values
-
filters
protected FilterPipeline filters
The FilterPipeline for the table.
-
compoundHighlighter
protected CompoundHighlighter compoundHighlighter
The CompoundHighlighter for the table.
-
USE_DTCR_COLORMEMORY_HACK
public static final java.lang.String USE_DTCR_COLORMEMORY_HACK
The key for the client property deciding about whether the color memory hack for DefaultTableCellRenderer should be used.
-
resetDefaultTableCellRendererHighlighter
protected Highlighter resetDefaultTableCellRendererHighlighter
The Highlighter used to hack around DefaultTableCellRenderer's color memory.
-
dataAdapter
protected ComponentAdapter dataAdapter
The ComponentAdapter for model data access.
-
selectionMapper
protected SelectionMapper selectionMapper
The handler for mapping view/model coordinates of row selection. Widened access to allow lazy instantiation in subclasses (#746-swingx).
-
isXTableRowHeightSet
protected boolean isXTableRowHeightSet
Flag to distinguish internal settings of rowheight from client code settings. The rowHeight will be internally adjusted to font size on instantiation and in updateUI if the height has not been set explicitly by the application.- See Also:
adminSetRowHeight(int)
,setRowHeight(int)
-
searchable
protected Searchable searchable
property to control search behaviour.
-
editorRemover
protected transient org.jdesktop.swingx.JXTable.CellEditorRemover editorRemover
-
-
Constructor Detail
-
JXTable
public JXTable()
Instantiates a JXTable with a default table model, no data.
-
JXTable
public JXTable(javax.swing.table.TableModel dm)
Instantiates a JXTable with a specific table model.- Parameters:
dm
- The model to use.
-
JXTable
public JXTable(javax.swing.table.TableModel dm, javax.swing.table.TableColumnModel cm)
Instantiates a JXTable with a specific table model.- Parameters:
dm
- The model to use.
-
JXTable
public JXTable(javax.swing.table.TableModel dm, javax.swing.table.TableColumnModel cm, javax.swing.ListSelectionModel sm)
Instantiates a JXTable with a specific table model, column model, and selection model.- Parameters:
dm
- The table model to use.cm
- The colomn model to use.sm
- The list selection model to use.
-
JXTable
public JXTable(int numRows, int numColumns)
Instantiates a JXTable for a given number of columns and rows.- Parameters:
numRows
- Count of rows to accomodate.numColumns
- Count of columns to accomodate.
-
JXTable
public JXTable(java.util.Vector rowData, java.util.Vector columnNames)
Instantiates a JXTable with data in a vector or rows and column names.- Parameters:
rowData
- Row data, as a Vector of Objects.columnNames
- Column names, as a Vector of Strings.
-
JXTable
public JXTable(java.lang.Object[][] rowData, java.lang.Object[] columnNames)
Instantiates a JXTable with data in a array or rows and column names.- Parameters:
rowData
- Row data, as a two-dimensional Array of Objects (by row, for column).columnNames
- Column names, as a Array of Strings.
-
-
Method Detail
-
setRolloverEnabled
public void setRolloverEnabled(boolean rolloverEnabled)
Property to enable/disable rollover support. This can be enabled to show "live" rollover behaviour, f.i. the cursor over LinkModel cells. Default is enabled. If rollover effects are not used, this property should be disabled.- Parameters:
rolloverEnabled
-
-
getLinkController
protected TableRolloverController<JXTable> getLinkController()
-
createLinkController
protected TableRolloverController<JXTable> createLinkController()
-
createRolloverProducer
protected RolloverProducer createRolloverProducer()
creates and returns the RolloverProducer to use.- Returns:
RolloverProducer
-
isRolloverEnabled
public boolean isRolloverEnabled()
Returns the rolloverEnabled property.- Returns:
true
if rollover is enabled
-
isColumnControlVisible
public boolean isColumnControlVisible()
Returns the column control visible property.- Returns:
- boolean to indicate whether the column control is visible.
- See Also:
setColumnControlVisible(boolean)
,setColumnControl(JComponent)
-
setColumnControlVisible
public void setColumnControlVisible(boolean visible)
Sets the column control visible property. If true andJXTable
is contained in aJScrollPane
, the table adds the column control to the trailing corner of the scroll pane.Note: if the table is not inside a
JScrollPane
the column control is not shown even if this returns true. In this case it's the responsibility of the client code to actually show it.The default value is
false
.- Parameters:
visible
- boolean to indicate if the column control should be shown- See Also:
isColumnControlVisible()
,setColumnControl(JComponent)
-
getColumnControl
public javax.swing.JComponent getColumnControl()
Returns the component used as column control. Lazily creates the control to the default if it isnull
.- Returns:
- component for column control, guaranteed to be != null.
- See Also:
setColumnControl(JComponent)
,createDefaultColumnControl()
-
setColumnControl
public void setColumnControl(javax.swing.JComponent columnControl)
Sets the component used as column control. Updates the enclosingJScrollPane
if appropriate. Passing anull
parameter restores the column control to the default.The component is automatically visible only if the
columnControlVisible
property istrue
and the table is contained in aJScrollPane
.NOTE: from the table's perspective, the column control is simply a
JComponent
to add to and keep in the trailing corner of the scrollpane. (if any). It's up the concrete control to configure itself from and keep synchronized to the columns' states.- Parameters:
columnControl
- theJComponent
to use as columnControl.- See Also:
getColumnControl()
,createDefaultColumnControl()
,setColumnControlVisible(boolean)
-
createDefaultColumnControl
protected javax.swing.JComponent createDefaultColumnControl()
Creates the default column control used by this table. This implementation returns aColumnControlButton
configured with defaultColumnControlIcon
.- Returns:
- the default component used as column control.
- See Also:
setColumnControl(JComponent)
,ColumnControlButton
,ColumnControlIcon
-
setComponentOrientation
public void setComponentOrientation(java.awt.ComponentOrientation o)
Sets the language-sensitive orientation that is to be used to order the elements or text within this component.Overridden to work around a core bug:
JScrollPane
can't cope with corners when changing component orientation at runtime. This method explicitly re-configures the column control.- Overrides:
setComponentOrientation
in classjava.awt.Component
- Parameters:
o
- the ComponentOrientation for this table.- See Also:
Component.setComponentOrientation(ComponentOrientation)
-
configureEnclosingScrollPane
protected void configureEnclosingScrollPane()
Configures the enclosingJScrollPane
.Overridden to addionally configure the upper trailing corner with the column control.
- Overrides:
configureEnclosingScrollPane
in classjavax.swing.JTable
- See Also:
configureColumnControl()
-
unconfigureEnclosingScrollPane
protected void unconfigureEnclosingScrollPane()
Unconfigures the enclosingJScrollPane
.Overridden to addionally unconfigure the upper trailing corner with the column control.
- Overrides:
unconfigureEnclosingScrollPane
in classjavax.swing.JTable
- See Also:
unconfigureColumnControl()
-
unconfigureColumnControl
protected void unconfigureColumnControl()
/** Unconfigures the upper trailing corner of an enclosingJScrollPane
. Here: removes the upper trailing corner and resets.
-
configureColumnControl
protected void configureColumnControl()
Configures the upper trailing corner of an enclosingJScrollPane
. Adds theColumnControl
if thecolumnControlVisible
property is true.
-
getUIString
protected java.lang.String getUIString(java.lang.String key)
Returns a potentially localized value from the UIManager. The given key is prefixed by this table'sUIPREFIX
before doing the lookup. The lookup respects this table's currentlocale
property. Returns the key, if no value is found.- Parameters:
key
- the bare key to look up in the UIManager.- Returns:
- the value mapped to UIPREFIX + key or key if no value is found.
-
getUIString
protected java.lang.String getUIString(java.lang.String key, java.util.Locale locale)
Returns a potentially localized value from the UIManager for the given locale. The given key is prefixed by this table'sUIPREFIX
before doing the lookup. Returns the key, if no value is found.- Parameters:
key
- the bare key to look up in the UIManager.locale
- the locale use for lookup- Returns:
- the value mapped to UIPREFIX + key in the given locale, or key if no value is found.
-
setLocale
public void setLocale(java.util.Locale locale)
Overridden to update locale-dependent properties.
- Overrides:
setLocale
in classjava.awt.Component
- See Also:
updateLocaleState(Locale)
-
updateLocaleState
protected void updateLocaleState(java.util.Locale locale)
Updates locale-dependent state to the givenLocale
. Here: updates registered column actions' locale-dependent state.PENDING: Try better to find all column actions including custom additions? Or move to columnControl?
- Parameters:
locale
- the Locale to use for value lookup- See Also:
setLocale(Locale)
,updateLocaleActionState(String, Locale)
-
updateLocaleActionState
protected void updateLocaleActionState(java.lang.String key, java.util.Locale locale)
Updates locale-dependent state of action registered with key inActionMap
. Does nothing if no action with key is found.Here: updates the
Action
's name property.- Parameters:
key
- the string for lookup in this table's ActionMap- See Also:
updateLocaleState(Locale)
-
packAll
public void packAll()
Resizes all columns to fit their content.By default this method is bound to the pack all columns
Action
and registered in the table'sActionMap
.
-
packSelected
public void packSelected()
Resizes the lead column to fit its content.By default this method is bound to the pack selected column
Action
and registered in the table'sActionMap
.
-
columnSelectionChanged
public void columnSelectionChanged(javax.swing.event.ListSelectionEvent e)
Overridden to update the enabled state of the pack selected column
Action
.- Specified by:
columnSelectionChanged
in interfacejavax.swing.event.TableColumnModelListener
- Overrides:
columnSelectionChanged
in classjavax.swing.JTable
-
setHorizontalScrollEnabled
public void setHorizontalScrollEnabled(boolean enabled)
Sets the enablement of enhanced horizontal scrolling. If enabled, it toggles an auto-resize mode which always fills theJViewport
horizontally and shows the horizontal scrollbar if necessary.The default value is
false
.Note: this is not a bound property, though it follows bean naming conventions. PENDING: Probably should be... If so, could be taken by a listening Action as in the app-framework.
PENDING JW: the name is mis-leading?
- Parameters:
enabled
- a boolean indicating whether enhanced auto-resize mode is enabled.- See Also:
isHorizontalScrollEnabled()
-
isHorizontalScrollEnabled
public boolean isHorizontalScrollEnabled()
Returns the current setting for horizontal scrolling.- Returns:
- the enablement of enhanced horizontal scrolling.
- See Also:
setHorizontalScrollEnabled(boolean)
-
setAutoResizeMode
public void setAutoResizeMode(int mode)
Overridden for internal bookkeeping related to the enhanced auto-resize behaviour.
Note: to enable/disable the enhanced auto-resize mode use exclusively
setHorizontalScrollEnabled
, this method can't cope with it.- Overrides:
setAutoResizeMode
in classjavax.swing.JTable
- See Also:
setHorizontalScrollEnabled(boolean)
-
updateHorizontalAction
protected void updateHorizontalAction()
Synchs selected state of horizontal scrollingAction
to enablement of enhanced auto-resize behaviour.
-
getScrollableTracksViewportWidth
public boolean getScrollableTracksViewportWidth()
Overridden to support enhanced auto-resize behaviour enabled and necessary.
- Specified by:
getScrollableTracksViewportWidth
in interfacejavax.swing.Scrollable
- Overrides:
getScrollableTracksViewportWidth
in classjavax.swing.JTable
- See Also:
setHorizontalScrollEnabled(boolean)
-
doLayout
public void doLayout()
Layouts column width. The exact behaviour depends on theautoResizeMode
property.Overridden to support enhanced auto-resize behaviour enabled and necessary.
- Overrides:
doLayout
in classjavax.swing.JTable
- See Also:
setAutoResizeMode(int)
,setHorizontalScrollEnabled(boolean)
-
columnMarginChanged
public void columnMarginChanged(javax.swing.event.ChangeEvent e)
Overridden to support enhanced auto-resize behaviour enabled and necessary.
- Specified by:
columnMarginChanged
in interfacejavax.swing.event.TableColumnModelListener
- Overrides:
columnMarginChanged
in classjavax.swing.JTable
- See Also:
setHorizontalScrollEnabled(boolean)
-
setFillsViewportHeight
public void setFillsViewportHeight(boolean fillsViewportHeight)
Sets the flag which controls the scrollableTracksViewportHeight property. If true the table's height will be always at least as large as the containing parent, if false the table's height will be independent of parent's height.The default value is
true
.Note: this a backport from Mustang's
JTable
.- Overrides:
setFillsViewportHeight
in classjavax.swing.JTable
- Parameters:
fillsViewportHeight
- boolean to indicate whether the table should always fill parent's height.- See Also:
getFillsViewportHeight()
,getScrollableTracksViewportHeight()
-
getFillsViewportHeight
public boolean getFillsViewportHeight()
Returns the flag which controls the scrollableTracksViewportHeight property.- Overrides:
getFillsViewportHeight
in classjavax.swing.JTable
- Returns:
- true if the table's height will always be at least as large as the containing parent, false if it is independent
- See Also:
setFillsViewportHeight(boolean)
,getScrollableTracksViewportHeight()
-
getScrollableTracksViewportHeight
public boolean getScrollableTracksViewportHeight()
Overridden to control the tracksHeight property depending on fillsViewportHeight and relative size to containing parent.
- Specified by:
getScrollableTracksViewportHeight
in interfacejavax.swing.Scrollable
- Overrides:
getScrollableTracksViewportHeight
in classjavax.swing.JTable
- Returns:
- true if the control flag is true and the containing parent height > prefHeight, else returns false.
- See Also:
setFillsViewportHeight(boolean)
-
getRowCount
public int getRowCount()
Returns the row count in the table; if filters are applied, this is the filtered row count.- Overrides:
getRowCount
in classjavax.swing.JTable
-
convertRowIndexToModel
public int convertRowIndexToModel(int row)
Convert row index from view coordinates to model coordinates accounting for the presence of sorters and filters.- Overrides:
convertRowIndexToModel
in classjavax.swing.JTable
- Parameters:
row
- row index in view coordinates- Returns:
- row index in model coordinates
-
convertRowIndexToView
public int convertRowIndexToView(int row)
Convert row index from model coordinates to view coordinates accounting for the presence of sorters and filters.- Overrides:
convertRowIndexToView
in classjavax.swing.JTable
- Parameters:
row
- row index in model coordinates- Returns:
- row index in view coordinates
-
getValueAt
public java.lang.Object getValueAt(int row, int column)
Overridden to account for row index mapping.- Overrides:
getValueAt
in classjavax.swing.JTable
-
setValueAt
public void setValueAt(java.lang.Object aValue, int row, int column)
Overridden to account for row index mapping. This implementation respects the cell's editability, that is it has no effect if!isCellEditable(row, column)
.- Overrides:
setValueAt
in classjavax.swing.JTable
- See Also:
isCellEditable(int, int)
-
isCellEditable
public boolean isCellEditable(int row, int column)
Returns true if the cell atrow
andcolumn
is editable. Otherwise, invokingsetValueAt
on the cell will have no effect.Overridden to account for row index mapping and to support a layered editability control:
- per-table:
JXTable.isEditable()
- per-column:
TableColumnExt.isEditable()
- per-cell: controlled by the model
TableModel.isCellEditable()
- Overrides:
isCellEditable
in classjavax.swing.JTable
- Parameters:
row
- the row index in view coordinatescolumn
- the column index in view coordinates- Returns:
- true if the cell is editable
- See Also:
setValueAt(Object, int, int)
,isEditable()
,TableColumnExt.isEditable()
,TableModel.isCellEditable(int, int)
- per-table:
-
setSelectionModel
public void setSelectionModel(javax.swing.ListSelectionModel newModel)
Overridden to update selectionMapper- Overrides:
setSelectionModel
in classjavax.swing.JTable
-
setModel
public void setModel(javax.swing.table.TableModel newModel)
- Overrides:
setModel
in classjavax.swing.JTable
-
getAutoCreateColumnsFromModel
public boolean getAutoCreateColumnsFromModel()
Overridden for documentation clarification. The property has the same meaning as super, that is if true to re-create all table columns on either setting a new TableModel or receiving a structureChanged from the existing. The most obvious visual effect is that custom column properties appear to be "lost".
JXTable does support additonal custom configuration (via a custom ColumnFactory) which can (and incorrectly was) called independently from the creation. Setting this property to false guarantees that no column configuration is applied.
- Overrides:
getAutoCreateColumnsFromModel
in classjavax.swing.JTable
- See Also:
tableChanged(TableModelEvent)
,org.jdesktop.table.ColumnFactory
-
tableChanged
public void tableChanged(javax.swing.event.TableModelEvent e)
additionally updates filtered state.- Specified by:
tableChanged
in interfacejavax.swing.event.TableModelListener
- Overrides:
tableChanged
in classjavax.swing.JTable
-
shouldSortOnChange
protected boolean shouldSortOnChange(javax.swing.event.TableModelEvent e)
Returns a boolean to indicate whether the table should be resorted after receiving the given event. This implementation returns true always.NOTE: this is a quick hack to give subclasses a hook to experiment with conditional keeping the view unsorted, f.i. after edits. It's untested ... and will not receive much work because in Mustang the DefaultRowSorter has the functionality.
- Parameters:
e
- the event which might trigger a resort.- Returns:
- a boolean indicating whether the event should trigger a re-sort, here true always.
-
isDataChanged
protected boolean isDataChanged(javax.swing.event.TableModelEvent e)
Convenience method to detect dataChanged table event type.- Parameters:
e
- the event to examine.- Returns:
- true if the event is of type dataChanged, false else.
-
isUpdate
protected boolean isUpdate(javax.swing.event.TableModelEvent e)
Convenience method to detect update table event type.- Parameters:
e
- the event to examine.- Returns:
- true if the event is of type update and not dataChanged, false else.
-
isStructureChanged
protected boolean isStructureChanged(javax.swing.event.TableModelEvent e)
Convenience method to detect a structureChanged table event type.- Parameters:
e
- the event to examine.- Returns:
- true if the event is of type structureChanged or null, false else.
-
updateViewSizeSequence
protected void updateViewSizeSequence()
Called if individual row height mapping need to be updated. This implementation guards against unnessary access of super's private rowModel field.
-
getSelectionMapper
public SelectionMapper getSelectionMapper()
- Returns:
SelectionMapper
-
getFilters
public FilterPipeline getFilters()
Returns the FilterPipeline for the table.
-
setFilters
public void setFilters(FilterPipeline pipeline)
Sets the FilterPipeline for filtering table rows, maybe null to remove all previously applied filters. Note: the current "interactive" sortState is preserved (by internally copying the old sortKeys to the new pipeline, if any).- Parameters:
pipeline
- theFilterPipeline
to use, null removes all filters.
-
getFilterPipelineListener
protected PipelineListener getFilterPipelineListener()
returns the listener for changes in filters.
-
createPipelineListener
protected PipelineListener createPipelineListener()
creates the listener for changes in filters.
-
updateOnFilterContentChanged
protected void updateOnFilterContentChanged()
method called on change notification from filterpipeline.
-
setSortable
public void setSortable(boolean sortable)
Sets "sortable" property indicating whether or not this table supports sortable columns. Ifsortable
istrue
then sorting will be enabled on all columns whosesortable
property istrue
. Ifsortable
isfalse
then sorting will be disabled for all columns, regardless of each column's individualsorting
property. The default istrue
.- Parameters:
sortable
- boolean indicating whether or not this table supports sortable columns- See Also:
TableColumnExt.isSortable()
-
isSortable
public boolean isSortable()
Returns the table's sortable property.- Returns:
- true if the table is sortable.
-
resetSortOrder
public void resetSortOrder()
Resets sorting of all columns.
-
toggleSortOrder
public void toggleSortOrder(int columnIndex)
Toggles the sort order of the column at columnIndex.The exact behaviour is defined by the SortController's toggleSortOrder implementation. Typically a unsorted column is sorted in ascending order, a sorted column's order is reversed.
Respects the tableColumnExt's sortable and comparator properties: routes the column's comparator to the SortController and does nothing if !isSortable(column).
PRE: 0 <= columnIndex < getColumnCount()
- Parameters:
columnIndex
- the columnIndex in view coordinates.
-
isSortable
protected boolean isSortable(int columnIndex)
Decides if the column at columnIndex can be interactively sorted.Here: true if both this table and the column sortable property is enabled, false otherwise.
- Parameters:
columnIndex
- column in view coordinates- Returns:
- boolean indicating whether or not the column is sortable in this table.
-
setSortOrder
public void setSortOrder(int columnIndex, SortOrder sortOrder)
Sorts the table by the given column using SortOrder. Respects the tableColumnExt's sortable and comparator properties: routes the column's comparator to the SortController and does nothing if !isSortable(column).PRE: 0 <= columnIndex < getColumnCount()
- Parameters:
columnIndex
- the column index in view coordinates.sortOrder
- the sort order to use. If null or SortOrder.UNSORTED, this method has the same effect as resetSortOrder();
-
getSortOrder
public SortOrder getSortOrder(int columnIndex)
Returns the SortOrder of the given column.- Parameters:
columnIndex
- the column index in view coordinates.- Returns:
- the interactive sorter's SortOrder if matches the column or SortOrder.UNSORTED
-
toggleSortOrder
public void toggleSortOrder(java.lang.Object identifier)
Toggles the sort order of the column with identifier.The exact behaviour is defined by the SortController's toggleSortOrder implementation. Typically a unsorted column is sorted in ascending order, a sorted column's order is reversed.
Respects the tableColumnExt's sortable and comparator properties: routes the column's comparator to the SortController and does nothing if !isSortable(column).
PENDING: JW - define the behaviour if the identifier is not found. This can happen if either there's no column at all with the identifier or if there's no column of type TableColumnExt. Currently does nothing, that is does not change sort state.
- Parameters:
identifier
- the column identifier.
-
setSortOrder
public void setSortOrder(java.lang.Object identifier, SortOrder sortOrder)
Sorts the table by the given column using the SortOrder. Respects the tableColumnExt's sortable and comparator properties: routes the column's comparator to the SortController and does nothing if !isSortable(column).PENDING: JW - define the behaviour if the identifier is not found. This can happen if either there's no column at all with the identifier or if there's no column of type TableColumnExt. Currently does nothing, that is does not change sort state.
- Parameters:
identifier
- the column's identifier.sortOrder
- the sort order to use. If null or SortOrder.UNSORTED, this method has the same effect as resetSortOrder();
-
getSortOrder
public SortOrder getSortOrder(java.lang.Object identifier)
Returns the SortOrder of the given column. PENDING: JW - define the behaviour if the identifier is not found. This can happen if either there's no column at all with the identifier or if there's no column of type TableColumnExt. Currently returns SortOrder.UNSORTED.- Parameters:
identifier
- the column's identifier.- Returns:
- the interactive sorter's SortOrder if matches the column or SortOrder.UNSORTED
-
isSortable
protected boolean isSortable(java.lang.Object identifier)
Decides if the column with identifier can be interactively sorted.Here: true if both this table and the column sortable property is enabled, false otherwise.
- Parameters:
identifier
- the column's identifier- Returns:
- boolean indicating whether or not the column is sortable in this table.
-
getSortController
protected SortController getSortController()
returns the currently active SortController. Can be null on the very first call after instantiation.- Returns:
- the currently active
SortController
may be null
-
getSortedColumn
public javax.swing.table.TableColumn getSortedColumn()
- Returns:
- the currently interactively sorted TableColumn or null if there is not sorter active or if the sorted column index does not correspond to any column in the TableColumnModel.
-
columnRemoved
public void columnRemoved(javax.swing.event.TableColumnModelEvent e)
overridden to remove the interactive sorter if the sorted column is no longer contained in the ColumnModel.- Specified by:
columnRemoved
in interfacejavax.swing.event.TableColumnModelListener
- Overrides:
columnRemoved
in classjavax.swing.JTable
-
getColumn
public javax.swing.table.TableColumn getColumn(int viewColumnIndex)
Returns theTableColumn
at view positioncolumnIndex
. The return value is notnull
.NOTE: This delegate method is added to protect developer's from unexpected exceptions in jdk1.5+. Super does not expose the
TableColumn
access by index which may lead to unexpectedIllegalArgumentException
: If client code assumes the delegate method is available, autoboxing will convert the given int to an Integer which will call the getColumn(Object) method.- Parameters:
viewColumnIndex
- index of the column with the object in question- Returns:
- the
TableColumn
object that matches the column index - Throws:
java.lang.ArrayIndexOutOfBoundsException
- if viewColumnIndex out of allowed range.- See Also:
JTable.getColumn(Object)
,getColumnExt(int)
,TableColumnModel.getColumn(int)
-
getColumns
public java.util.List<javax.swing.table.TableColumn> getColumns()
Returns aList
of visibleTableColumn
s.- Returns:
- a
List
of visible columns. - See Also:
getColumns(boolean)
-
getColumnMargin
public int getColumnMargin()
Returns the margin between columns.Convenience to expose column model properties through
JXTable
api.- Returns:
- the margin between columns
- See Also:
setColumnMargin(int)
,TableColumnModel.getColumnMargin()
-
setColumnMargin
public void setColumnMargin(int value)
Sets the margin between columns. Convenience to expose column model properties throughJXTable
api.- Parameters:
value
- margin between columns; must be greater than or equal to zero.- See Also:
getColumnMargin()
,TableColumnModel.setColumnMargin(int)
-
getColumnCount
public int getColumnCount(boolean includeHidden)
Returns the number of contained columns. The count includes or excludes invisible columns, depending on whether theincludeHidden
is true or false, respectively. If false, this method returns the same count asgetColumnCount()
. If the columnModel is not of typeTableColumnModelExt
, the parameter value has no effect.- Parameters:
includeHidden
- a boolean to indicate whether invisible columns should be included- Returns:
- the number of contained columns, including or excluding the invisible as specified.
- See Also:
JTable.getColumnCount()
,TableColumnModelExt.getColumnCount(boolean)
-
getColumns
public java.util.List<javax.swing.table.TableColumn> getColumns(boolean includeHidden)
Returns aList
of containedTableColumn
s. Includes or excludes invisible columns, depending on whether theincludeHidden
is true or false, respectively. If false, anIterator
over the List is equivalent to theEnumeration
returned bygetColumns()
. If the columnModel is not of typeTableColumnModelExt
, the parameter value has no effect.NOTE: the order of columns in the List depends on whether or not the invisible columns are included, in the former case it's the insertion order in the latter it's the current order of the visible columns.
- Parameters:
includeHidden
- a boolean to indicate whether invisible columns should be included- Returns:
- a
List
of contained columns. - See Also:
getColumns()
,TableColumnModelExt.getColumns(boolean)
-
getColumnExt
public TableColumnExt getColumnExt(java.lang.Object identifier)
Returns the firstTableColumnExt
with the givenidentifier
. The return value is null if there is no contained column with identifier or if the column withidentifier
is not of typeTableColumnExt
. The returned column may be visible or hidden.- Parameters:
identifier
- the object used as column identifier- Returns:
- first
TableColumnExt
with the given identifier or null if none is found - See Also:
getColumnExt(int)
,JTable.getColumn(Object)
,TableColumnModelExt.getColumnExt(Object)
-
getColumnExt
public TableColumnExt getColumnExt(int viewColumnIndex)
Returns theTableColumnExt
at view positioncolumnIndex
. The return value is null, if the column at positioncolumnIndex
is not of typeTableColumnExt
. The returned column is visible.- Parameters:
viewColumnIndex
- the index of the column desired- Returns:
- the
TableColumnExt
object that matches the column index - Throws:
java.lang.ArrayIndexOutOfBoundsException
- if columnIndex out of allowed range, that is if(columnIndex < 0) || (columnIndex >= getColumnCount())
.- See Also:
getColumnExt(Object)
,getColumn(int)
,TableColumnModelExt.getColumnExt(int)
-
setColumnSequence
public void setColumnSequence(java.lang.Object[] identifiers)
Reorders the columns in the sequence given array. Logical names that do not correspond to any column in the model will be ignored. Columns with logical names not contained are added at the end. PENDING JW - do we want this? It's used by JNTable.- Parameters:
identifiers
- array of logical column names- See Also:
getColumns(boolean)
-
columnPropertyChange
public void columnPropertyChange(java.beans.PropertyChangeEvent event)
Notifies listeners about property changes of contained columns. The event is the original as fired from theTableColumn
. Listens to column property changes.- Specified by:
columnPropertyChange
in interfaceTableColumnModelExtListener
- Parameters:
event
- aPropertyChangeEvent
fired by aTableColumn
contained in aTableColumnModel
-
createDefaultColumnsFromModel
public void createDefaultColumnsFromModel()
Creates, configures and adds defaultTableColumn
s for columns in this table'sTableModel
. Removes all currently containedTableColumn
s. The exact type and configuration of the columns is controlled by theColumnFactory
.- Overrides:
createDefaultColumnsFromModel
in classjavax.swing.JTable
- See Also:
ColumnFactory
-
getColumnFactory
public ColumnFactory getColumnFactory()
Returns the ColumnFactory.- Returns:
- the columnFactory to use for column creation and configuration, guaranteed to not be null.
- See Also:
setColumnFactory(ColumnFactory)
,ColumnFactory
-
setColumnFactory
public void setColumnFactory(ColumnFactory columnFactory)
Sets theColumnFactory
to use for column creation and configuration. The default value is the shared application ColumnFactory.Note: this method has no side-effect, that is existing columns are not re-created automatically, client code must trigger it manually.
- Parameters:
columnFactory
- the factory to use,null
indicates to use the shared application factory.- See Also:
getColumnFactory()
,ColumnFactory
-
packTable
public void packTable(int margin)
Packs all the columns to their optimal size. Works best with auto resizing turned off.- Parameters:
margin
- the margin to apply to each column.- See Also:
packColumn(int, int)
,packColumn(int, int, int)
-
packColumn
public void packColumn(int column, int margin)
Packs an indivudal column in the table.- Parameters:
column
- The Column index to pack in View Coordinatesmargin
- The Margin to apply to the column width.- See Also:
packColumn(int, int, int)
,packTable(int)
-
packColumn
public void packColumn(int column, int margin, int max)
Packs an indivual column in the table to less than or equal to the maximum witdth. If maximum is -1 then the column is made as wide as it needs.- Parameters:
column
- the column index to pack in view coordinatesmargin
- the margin to apply to the columnmax
- the maximum width the column can be resized to, -1 means no limit- See Also:
packColumn(int, int)
,packTable(int)
,ColumnFactory.packColumn(JXTable, TableColumnExt, int, int)
-
getVisibleRowCount
public int getVisibleRowCount()
Returns the preferred number of rows to show in aJScrollPane
.- Returns:
- the number of rows to show in a
JScrollPane
- See Also:
setVisibleRowCount(int)
-
setVisibleRowCount
public void setVisibleRowCount(int visibleRowCount)
Sets the preferred number of rows to show in aJScrollPane
.This is a bound property. The default value is 20.
PENDING: allow negative for use-all? Analogous to visColumnCount.
- Parameters:
visibleRowCount
- number of rows to show in aJScrollPane
- Throws:
java.lang.IllegalArgumentException
- if given count is negative.- See Also:
getVisibleRowCount()
-
getVisibleColumnCount
public int getVisibleColumnCount()
Returns the preferred number of columns to show in theJScrollPane
.- Returns:
- the number of columns to show in the scroll pane.
- See Also:
setVisibleColumnCount(int)
-
setVisibleColumnCount
public void setVisibleColumnCount(int visibleColumnCount)
Sets the preferred number of Columns to show in aJScrollPane
. A negative number is interpreted as use-all available visible columns.This is a bound property. The default value is -1 (effectively the same as before the introduction of this property).
- Parameters:
visibleColumnCount
- number of rows to show in aJScrollPane
- See Also:
getVisibleColumnCount()
-
setPreferredScrollableViewportSize
public void setPreferredScrollableViewportSize(java.awt.Dimension size)
If the given dimension is null, the auto-calculation of the pref scrollable size is enabled, otherwise the behaviour is the same as super. The default is auto-calc enabled on.
- Overrides:
setPreferredScrollableViewportSize
in classjavax.swing.JTable
- See Also:
getPreferredScrollableViewportSize()
-
getPreferredScrollableViewportSize
public java.awt.Dimension getPreferredScrollableViewportSize()
Overridden to support auto-calculation of pref scrollable size, dependent on the visible row/column count properties. The auto-calc is on if there's no explicit pref scrollable size set. Otherwise the fixed size is returned
The calculation of the preferred scrollable width is delegated to the ColumnFactory to allow configuration with custom strategies implemented in custom factories.
- Specified by:
getPreferredScrollableViewportSize
in interfacejavax.swing.Scrollable
- Overrides:
getPreferredScrollableViewportSize
in classjavax.swing.JTable
- See Also:
setPreferredScrollableViewportSize(Dimension)
,ColumnFactory.getPreferredScrollableViewportWidth(JXTable)
-
initializeColumnWidths
protected void initializeColumnWidths()
Initialize the width related properties of all contained TableColumns, both visible and hidden.- PENDING: move into ColumnFactory?
- PENDING: what to do if autoCreateColumn off?
- PENDING: public? to allow manual setting of column properties which might effect their default sizing. Needed in testing - but real-world? the factory is meant to do the property setting, based on tableModel and meta-data (from where?). But leads to funny call sequence for per-table factory (new JXTable(), table.setColumnFactory(..), table.setModel(...))
-
initializeColumnPreferredWidth
protected void initializeColumnPreferredWidth(javax.swing.table.TableColumn column)
Initialize the width related properties of the specified column. The details are specified by the currentColumnFactory
if the column is of typeTableColumnExt
. Otherwise nothing is changed.TODO JW - need to cleanup getScrollablePreferred (refactor and inline)
- Parameters:
column
- TableColumn object representing view column- See Also:
ColumnFactory.configureColumnWidths(org.jdesktop.swingx.JXTable, org.jdesktop.swingx.table.TableColumnExt)
-
scrollRowToVisible
public void scrollRowToVisible(int row)
Scrolls vertically to make the given row visible. This might not have any effect if the table isn't contained in aJViewport
.Note: this method has no precondition as it internally uses
getCellRect
which is lenient to off-range coordinates.- Parameters:
row
- the view row index of the cell- See Also:
scrollColumnToVisible(int)
,scrollCellToVisible(int, int)
,JComponent.scrollRectToVisible(Rectangle)
-
scrollColumnToVisible
public void scrollColumnToVisible(int column)
Scrolls horizontally to make the given column visible. This might not have any effect if the table isn't contained in aJViewport
.Note: this method has no precondition as it internally uses
getCellRect
which is lenient to off-range coordinates.- Parameters:
column
- the view column index of the cell- See Also:
scrollRowToVisible(int)
,scrollCellToVisible(int, int)
,JComponent.scrollRectToVisible(Rectangle)
-
scrollCellToVisible
public void scrollCellToVisible(int row, int column)
Scrolls to make the cell at row and column visible. This might not have any effect if the table isn't contained in aJViewport
.Note: this method has no precondition as it internally uses
getCellRect
which is lenient to off-range coordinates.- Parameters:
row
- the view row index of the cellcolumn
- the view column index of the cell- See Also:
scrollColumnToVisible(int)
,scrollRowToVisible(int)
,JComponent.scrollRectToVisible(Rectangle)
-
getSelectionMode
public int getSelectionMode()
Returns the selection mode used by this table's selection model.PENDING JW - setter?
- Returns:
- the selection mode used by this table's selection model
- See Also:
ListSelectionModel.getSelectionMode()
-
getSearchable
public Searchable getSearchable()
- Returns:
- a not-null Searchable for this editor.
-
setSearchable
public void setSearchable(Searchable searchable)
sets the Searchable for this editor. If null, a default searchable will be used.- Parameters:
searchable
-
-
getComponentAdapter
protected ComponentAdapter getComponentAdapter()
- Returns:
- the unconfigured ComponentAdapter.
-
getComponentAdapter
protected ComponentAdapter getComponentAdapter(int row, int column)
Convenience to access a configured ComponentAdapter.- Parameters:
row
- the row index in view coordinates.column
- the column index in view coordinates.- Returns:
- the configured ComponentAdapter.
-
setHighlighters
public void setHighlighters(Highlighter... highlighters)
Sets theHighlighter
s to the table, replacing any old settings. None of the given Highlighters must be null.This is a bound property.
Note: as of version #1.257 the null constraint is enforced strictly. To remove all highlighters use this method without param.
- Parameters:
highlighters
- zero or more not null highlighters to use for renderer decoration.- Throws:
java.lang.NullPointerException
- if array is null or array contains null values.- See Also:
getHighlighters()
,addHighlighter(Highlighter)
,removeHighlighter(Highlighter)
-
getHighlighters
public Highlighter[] getHighlighters()
Returns theHighlighter
s used by this table. Maybe empty, but guarantees to be never null.- Returns:
- the Highlighters used by this table, guaranteed to never null.
- See Also:
setHighlighters(Highlighter[])
-
addHighlighter
public void addHighlighter(Highlighter highlighter)
Appends aHighlighter
to the end of the list of usedHighlighter
s. The argument must not be null.- Parameters:
highlighter
- theHighlighter
to add, must not be null.- Throws:
java.lang.NullPointerException
- ifHighlighter
is null.- See Also:
removeHighlighter(Highlighter)
,setHighlighters(Highlighter[])
-
removeHighlighter
public void removeHighlighter(Highlighter highlighter)
Removes the given Highlighter.Does nothing if the Highlighter is not contained.
- Parameters:
highlighter
- the Highlighter to remove.- See Also:
addHighlighter(Highlighter)
,setHighlighters(Highlighter...)
-
getCompoundHighlighter
protected CompoundHighlighter getCompoundHighlighter()
Returns the CompoundHighlighter assigned to the table, null if none. PENDING: open up for subclasses again?.- Returns:
- the CompoundHighlighter assigned to the table.
- See Also:
#setCompoundHighlighter(CompoundHighlighter)
-
getHighlighterChangeListener
protected javax.swing.event.ChangeListener getHighlighterChangeListener()
Returns theChangeListener
to use with highlighters. Lazily creates the listener.- Returns:
- the ChangeListener for observing changes of highlighters,
guaranteed to be
not-null
-
createHighlighterChangeListener
protected javax.swing.event.ChangeListener createHighlighterChangeListener()
Creates and returns the ChangeListener observing Highlighters.Here: repaints the table on receiving a stateChanged.
- Returns:
- the ChangeListener defining the reaction to changes of highlighters.
-
getStringAt
public java.lang.String getStringAt(int row, int column)
Returns the string representation of the cell value at the given position.- Parameters:
row
- the row index of the cell in view coordinatescolumn
- the column index of the cell in view coordinates.- Returns:
- the string representation of the cell value as it will appear in the table.
-
getCellRenderer
public javax.swing.table.TableCellRenderer getCellRenderer(int row, int column)
Overridden to fix core bug #4614616 (NPE if
TableModel
'sClass
for the column is an interface). This method guarantees to always return anot null
value. Returns the default renderer forObject
if super returnsnull
.- Overrides:
getCellRenderer
in classjavax.swing.JTable
-
prepareRenderer
public java.awt.Component prepareRenderer(javax.swing.table.TableCellRenderer renderer, int row, int column)
Returns the decoratedComponent
used as a stamp to render the specified cell. Overrides superclass version to provide support for cell decorators.Adjusts component orientation (guaranteed to happen before applying Highlighters).
Per-column highlighters contained in
TableColumnExt.getHighlighters()
are applied to the renderer after the table highlighters.TODO kgs: interaction of search highlighter and column highlighters
Note: DefaultTableCellRenderer and subclasses require a hack to play nicely with Highlighters because it has an internal "color memory" in setForeground/setBackground. The hack is applied in
resetDefaultTableCellRendererColors
which is called after super.prepareRenderer and before applying the Highlighters. The method is called always and for all renderers.- Overrides:
prepareRenderer
in classjavax.swing.JTable
- Parameters:
renderer
- theTableCellRenderer
to preparerow
- the row of the cell to render, where 0 is the first rowcolumn
- the column of the cell to render, where 0 is the first column- Returns:
- the decorated
Component
used as a stamp to render the specified cell - See Also:
resetDefaultTableCellRendererColors(Component, int, int)
,Highlighter
-
resetDefaultTableCellRendererColors
protected void resetDefaultTableCellRendererColors(java.awt.Component renderer, int row, int column)
Method to apply a hack around DefaultTableCellRenderer "color memory" (Issue #258-swingx). Applies the hack if the client propertyUSE_DTCR_COLORMEMORY_HACK
having the value ofBoolean.TRUE
, does nothing otherwise. The property is true by default.The hack consists of applying a specialized
Highlighter
to force reset the color "memory" ofDefaultTableCellRenderer
. Note that the hack is applied always, that is even if there are no custom Highlighters.Client code which solves the problem at the core (that is in a well-behaved
DefaultTableCellRenderer
) can disable the hack by removing the client property or by subclassing and override this to do nothing.- Parameters:
renderer
- theTableCellRenderer
to hackrow
- the row of the cell to rendercolumn
- the column index of the cell to render- See Also:
prepareRenderer(TableCellRenderer, int, int)
,USE_DTCR_COLORMEMORY_HACK
,ResetDTCRColorHighlighter
-
prepareEditor
public java.awt.Component prepareEditor(javax.swing.table.TableCellEditor editor, int row, int column)
Overridden to adjust the editor's component orientation.
- Overrides:
prepareEditor
in classjavax.swing.JTable
-
adjustComponentOrientation
protected void adjustComponentOrientation(java.awt.Component stamp)
Adjusts theComponent
's orientation to thisJXTable
's CO if appropriate. The parameter must not benull
.This implementation synchs the CO always.
- Parameters:
stamp
- theComponent
who's CO may need to be synched, must not benull
.
-
getNewDefaultRenderer
public javax.swing.table.TableCellRenderer getNewDefaultRenderer(java.lang.Class columnClass)
Returns a new instance of the default renderer for the specified class. This differs fromgetDefaultRenderer()
in that it returns a new instance each time so that the renderer may be set and customized on a particular column.NOTE: this doesn't work with swingx renderers! Do we really need it? It had been used in JNTable which is practically obsolete. If needed, we could make all renderer support classes clonable.
- Parameters:
columnClass
- Class of value being rendered- Returns:
- TableCellRenderer instance which renders values of the specified type
- See Also:
JTable.getDefaultRenderer(Class)
-
createDefaultRenderers
protected void createDefaultRenderers()
Creates default cell renderers forObject
s,Number
s,Date
s,Boolean
s, andIcon/Image/
s.Overridden to install SwingX renderers plus hacking around huge memory consumption of UIDefaults (see #6345050 in core Bug parade)
- Overrides:
createDefaultRenderers
in classjavax.swing.JTable
- See Also:
DefaultTableRenderer
,ComponentProvider
-
createDefaultEditors
protected void createDefaultEditors()
Creates default cell editors for objects, numbers, and boolean values.Overridden to hook enhanced editors (f.i.
NumberEditorExt
)plus hacking around huge memory consumption of UIDefaults (see #6345050 in core Bug parade)- Overrides:
createDefaultEditors
in classjavax.swing.JTable
- See Also:
DefaultCellEditor
-
isEditable
public boolean isEditable()
Returns the editable property of theJXTable
as a whole.- Returns:
- boolean to indicate if the table is editable.
- See Also:
setEditable(boolean)
-
setEditable
public void setEditable(boolean editable)
Sets the editable property. This property allows to mark all cells in a table as read-only, independent of their per-column editability as returned byTableColumnExt.isEditable
and their per-cell editability as returned by theTableModel.isCellEditable
. If a cell is read-only in its column or model layer, this property has no effect.The default value is
true
.- Parameters:
editable
- the flag to indicate if the table is editable.- See Also:
isEditable()
,isCellEditable(int, int)
-
isTerminateEditOnFocusLost
public boolean isTerminateEditOnFocusLost()
Returns the property which determines the edit termination behaviour on focus lost.- Returns:
- boolean to indicate whether an ongoing edit should be terminated if the focus is moved to somewhere outside of the table.
- See Also:
setTerminateEditOnFocusLost(boolean)
-
setTerminateEditOnFocusLost
public void setTerminateEditOnFocusLost(boolean terminate)
Sets the property to determine whether an ongoing edit should be terminated if the focus is moved to somewhere outside of the table. If true, terminates the edit, does nothing otherwise. The exact behaviour is implemented inJTable.CellEditorRemover
: "outside" is interpreted to be on a component which is not under the table hierarchy but inside the same toplevel window, "terminate" does so in any case, first tries to stop the edit, if that's unsuccessful it cancels the edit.The default value is
true
.- Parameters:
terminate
- the flag to determine whether or not to terminate the edit- See Also:
isTerminateEditOnFocusLost()
-
isAutoStartEditOnKeyStroke
public boolean isAutoStartEditOnKeyStroke()
Returns the autoStartsEdit property.- Returns:
- boolean to indicate whether a keyStroke should try to start editing.
- See Also:
setAutoStartEditOnKeyStroke(boolean)
-
setAutoStartEditOnKeyStroke
public void setAutoStartEditOnKeyStroke(boolean autoStart)
Sets the autoStartsEdit property. If true, keystrokes are passed-on to the cellEditor of the lead cell to let it decide whether to start an edit.The default value is
true
.- Parameters:
autoStart
- boolean to determine whether a keyStroke should try to start editing.- See Also:
isAutoStartEditOnKeyStroke()
-
editCellAt
public boolean editCellAt(int row, int column, java.util.EventObject e)
overridden to install a custom editor remover.
- Overrides:
editCellAt
in classjavax.swing.JTable
-
removeEditor
public void removeEditor()
Overridden with backport from Mustang fix for #4684090, #4887999.- Overrides:
removeEditor
in classjavax.swing.JTable
-
removeNotify
public void removeNotify()
Overridden to uninstall the custom editor remover.
- Overrides:
removeNotify
in classjavax.swing.JTable
-
isFocusCycleRoot
public boolean isFocusCycleRoot()
Overridden to prevent spurious focus loss to outside of table while removing the editor. This is essentially a hack around core bug #6210779. PENDING: add link to wiki!
- Overrides:
isFocusCycleRoot
in classjava.awt.Container
-
transferFocus
public void transferFocus()
Overridden to try to stop the edit, if appropriate. Calls super if succeeded, does not yield otherwise.
- Overrides:
transferFocus
in classjava.awt.Component
-
transferFocusBackward
public void transferFocusBackward()
Overridden to try to stop the edit, if appropiate. Calls super if succeeded, does not yield otherwise.
- Overrides:
transferFocusBackward
in classjava.awt.Component
-
updateUI
public void updateUI()
Additionally updates auto-adjusted row height and highlighters.
Another of the override motivation is to fix core issue (?? ID): super fails to update all renderers/editors.
- Overrides:
updateUI
in classjavax.swing.JTable
-
updateColumnControlUI
protected void updateColumnControlUI()
Updates the ui of the columnControl if appropriate.
-
updateColumnUI
protected void updateColumnUI(javax.swing.table.TableColumn column)
Updates TableColumn after updateUI changes. This implementation delegates to the column if it is of type UIDependent, takes over to try an update of the column's cellEditor, Cell-/HeaderRenderer otherwise.- Parameters:
column
- the tableColumn to update.
-
updateHighlighterUI
protected void updateHighlighterUI()
Updates highlighter afterupdateUI
changes.- See Also:
UIDependent
-
updateRowHeightUI
protected void updateRowHeightUI(boolean respectRowSetFlag)
Auto-adjusts rowHeight to something more pleasing then the default. This method is called after instantiation and after updating the UI. Does nothing if the given parameter istrue
and the rowHeight had been already set by client code. The underlying problem is that raw types can't implement UIResource.This implementation asks the UIManager for a default value (stored with key "JXTable.rowHeight"). If none is available, calculates a "reasonable" height from the table's fontMetrics, assuming that most renderers/editors will have a border with top/bottom of 1.
- Parameters:
respectRowSetFlag
- a boolean to indicate whether client-code flag should be respected.- See Also:
isXTableRowHeightSet
-
setShowGrid
public void setShowGrid(boolean showHorizontalLines, boolean showVerticalLines)
Convenience to set both grid line visibility and default margin for horizontal/vertical lines. The margin defaults to 1 or 0 if the grid lines are drawn or not drawn.- Parameters:
showHorizontalLines
- boolean to decide whether to draw horizontal grid lines.showVerticalLines
- boolean to decide whether to draw vertical grid lines.- See Also:
JTable.setShowGrid(boolean)
,JTable.setIntercellSpacing(Dimension)
-
setShowGrid
public void setShowGrid(boolean showGrid)
Behaves exactly like super.
It's overridden to warn against a frequent programming error: this method toggles only the visibility of the grid lines, it does not update the row/column margins - which may lead to visual artefacts, as f.i. not showing the lines at all or showing normal table background in selected state where the lines should have been.
- Overrides:
setShowGrid
in classjavax.swing.JTable
- See Also:
for an alternative
-
setRowHeight
public void setRowHeight(int rowHeight)
Overriden to keep view/model coordinates of SizeSequence in synch. Marks the request as client-code induced.
- Overrides:
setRowHeight
in classjavax.swing.JTable
- See Also:
isXTableRowHeightSet
-
setRowHeight
public void setRowHeight(int row, int rowHeight)
Does nothing if support of individual rowHeights is not enabled. Overriden to keep view/model coordinates of SizeSequence in synch.
- Overrides:
setRowHeight
in classjavax.swing.JTable
- See Also:
isRowHeightEnabled()
-
setRowHeightEnabled
public void setRowHeightEnabled(boolean enabled)
Sets enablement of individual rowHeight support. Enabling the support involves reflective access to super's private field rowModel which may fail due to security issues. If failing the support is not enabled.The default value is
false
.- Parameters:
enabled
- a boolean to indicate whether per-row heights should be enabled.- See Also:
isRowHeightEnabled()
,setRowHeight(int, int)
-
isRowHeightEnabled
public boolean isRowHeightEnabled()
Returns a boolean to indicate whether individual row height is enabled.- Returns:
- a boolean to indicate whether individual row height support is enabled.
- See Also:
setRowHeightEnabled(boolean)
,setRowHeight(int, int)
-
getRowModelMapper
protected SizeSequenceMapper getRowModelMapper()
Returns the mapper used synch individual rowHeights in view/model coordinates.- Returns:
- the
SizeSequenceMapper
used to synch view/model coordinates for individual row heights - See Also:
SizeSequenceMapper
-
adminSetRowHeight
protected void adminSetRowHeight(int rowHeight)
Sets the rowHeight for all rows to the given value. Keeps the flagisXTableRowHeight
unchanged. This enables the distinction between setting the height for internal reasons from doing so by client code.- Parameters:
rowHeight
- new height in pixel.- See Also:
setRowHeight(int)
,isXTableRowHeightSet
-
rowAtPoint
public int rowAtPoint(java.awt.Point point)
Overridden to work around core Bug (ID #6291631): negative y is mapped to row 0).
- Overrides:
rowAtPoint
in classjavax.swing.JTable
-
createDefaultTableHeader
protected javax.swing.table.JTableHeader createDefaultTableHeader()
Overridden to return a
JXTableHeader
.- Overrides:
createDefaultTableHeader
in classjavax.swing.JTable
- See Also:
JXTableHeader
-
createDefaultColumnModel
protected javax.swing.table.TableColumnModel createDefaultColumnModel()
Overridden to return a
DefaultTableColumnModelExt
.- Overrides:
createDefaultColumnModel
in classjavax.swing.JTable
- See Also:
DefaultTableColumnModelExt
-
setSelectionBackground
public void setSelectionBackground(java.awt.Color selectionBackground)
Overridden because super throws NPE on null param.
- Overrides:
setSelectionBackground
in classjavax.swing.JTable
-
setSelectionForeground
public void setSelectionForeground(java.awt.Color selectionForeground)
Overridden because super throws NPE on null param.
- Overrides:
setSelectionForeground
in classjavax.swing.JTable
-
setGridColor
public void setGridColor(java.awt.Color gridColor)
Overridden because super throws NPE on null param.
- Overrides:
setGridColor
in classjavax.swing.JTable
-
-