Class JXTreeTable
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JTable
-
- org.jdesktop.swingx.JXTable
-
- org.jdesktop.swingx.JXTreeTable
-
- 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
public class JXTreeTable extends JXTable
JXTreeTable
is a specializedtable
consisting of a single column in which to display hierarchical data, and any number of other columns in which to display regular data. The interface for the data model used by aJXTreeTable
isTreeTableModel
. It extends theTreeModel
interface to allow access to cell data by column indices within each node of the tree hierarchy.The most straightforward way create and use a
JXTreeTable
, is to first create a suitable data model for it, and pass that to aJXTreeTable
constructor, as shown below:TreeTableModel treeTableModel = new FileSystemModel(); // any TreeTableModel JXTreeTable treeTable = new JXTreeTable(treeTableModel); JScrollPane scrollpane = new JScrollPane(treeTable);
SeeJTable
for an explanation of why putting the treetable inside a scroll pane is necessary.A single treetable model instance may be shared among more than one
JXTreeTable
instances. To access the treetable model, always callgetTreeTableModel
andsetTreeTableModel
.JXTreeTable
wraps the supplied treetable model inside a private adapter class to adapt it to aTableModel
. Although the model adapter is accessible through thegetModel
method, you should avoid accessing and manipulating it in any way. In particular, each model adapter instance is tightly bound to a single table instance, and any attempt to share it with another table (for example, by callingsetModel
) will throw anIllegalArgumentException
!- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
JXTreeTable.TreeTableDataAdapter
class
JXTreeTable.TreeTableHacker
Temporary class to have all the hacking at one place.class
JXTreeTable.TreeTableHackerExt
Note: currently this class looks a bit funny (only overriding the hit decision method).class
JXTreeTable.TreeTableHackerExt2
Patch for #471-swingx: no selection on click in hierarchical column outside of node-text.protected static class
JXTreeTable.TreeTableModelAdapter
-
Nested classes/interfaces inherited from class org.jdesktop.swingx.JXTable
JXTable.BooleanEditor, JXTable.GenericEditor, JXTable.NumberEditor, 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 static java.lang.String
DRAG_HACK_FLAG_KEY
Key for clientProperty to decide whether to apply hack around #168-jdnc.static java.lang.String
DROP_HACK_FLAG_KEY
Key for clientProperty to decide whether to apply hack around #766-swingx.-
Fields inherited from class org.jdesktop.swingx.JXTable
compoundHighlighter, dataAdapter, editorRemover, filters, FOCUS_NEXT_COMPONENT, FOCUS_PREVIOUS_COMPONENT, HORIZONTALSCROLL_ACTION_COMMAND, isXTableRowHeightSet, MATCH_HIGHLIGHTER, PACKALL_ACTION_COMMAND, PACKSELECTED_ACTION_COMMAND, resetDefaultTableCellRendererHighlighter, searchable, selectionMapper, UIPREFIX, USE_DTCR_COLORMEMORY_HACK
-
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 JXTreeTable()
Constructs a JXTreeTable using aDefaultTreeTableModel
.JXTreeTable(TreeTableModel treeModel)
Constructs a JXTreeTable using the specifiedTreeTableModel
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addTreeExpansionListener(javax.swing.event.TreeExpansionListener tel)
Adds a listener forTreeExpansion
events.void
addTreeSelectionListener(javax.swing.event.TreeSelectionListener tsl)
Adds a listener forTreeSelection
events.void
addTreeWillExpandListener(javax.swing.event.TreeWillExpandListener tel)
Adds a listener forTreeWillExpand
events.protected void
adjustTableRowHeight(int treeRowHeight)
Forwards treeRowHeight to table.protected void
adjustTreeRowHeight(int tableRowHeight)
Forwards tableRowHeight to tree.protected java.awt.Component
applyRenderer(java.awt.Component component, ComponentAdapter adapter)
Performs configuration of the tree's renderer if the adapter's column is the hierarchical column, does nothing otherwise.void
clearSelection()
Overridden to ensure that private renderer state is kept in sync with the state of the component.void
collapseAll()
Collapses all nodes in the treetable.void
collapsePath(javax.swing.tree.TreePath path)
Collapses the node at the specified path in the treetable.void
collapseRow(int row)
Collapses the row in the treetable.protected SelectionMapper
createSelectionMapper()
Fix for #745-swingx: remove static selectionMaper.protected JXTreeTable.TreeTableHacker
createTreeTableHacker()
boolean
editCellAt(int row, int column, java.util.EventObject e)
Overriden to invoke repaint for the particular location if the column contains the tree.void
expandAll()
Expands all nodes in the treetable.void
expandPath(javax.swing.tree.TreePath path)
Expands the the node at the specified path in the treetable.void
expandRow(int row)
Expands the specified row in the treetable.javax.swing.table.TableCellEditor
getCellEditor(int row, int column)
javax.swing.table.TableCellRenderer
getCellRenderer(int row, int column)
protected ComponentAdapter
getComponentAdapter()
Returns the adapter that knows how to access the component data model.int
getEditingRow()
Overridden to provide a workaround for BasicTableUI anomaly.java.util.Enumeration<?>
getExpandedDescendants(javax.swing.tree.TreePath parent)
Returns anEnumeration
of the descendants of the pathparent
that are currently expanded.boolean
getExpandsSelectedPaths()
Returns the value of theexpandsSelectedPaths
property.int
getHierarchicalColumn()
Returns the index of the hierarchical column.javax.swing.tree.TreePath
getPathForLocation(int x, int y)
Returns the TreePath for a given x,y location.javax.swing.tree.TreePath
getPathForRow(int row)
Returns the TreePath for a given row.int
getRowForPath(javax.swing.tree.TreePath path)
Returns the row for a given TreePath.boolean
getScrollsOnExpand()
Returns the value of thescrollsOnExpand
property.SelectionMapper
getSelectionMapper()
Overridden to return a do-nothing mapper.boolean
getShowsRootHandles()
Returns the value of theshowsRootHandles
property.java.lang.String
getStringAt(int row, int column)
Returns the string representation of the cell value at the given position.int
getToggleClickCount()
Returns the number of mouse clicks needed to expand or close a node.java.lang.String
getToolTipText(java.awt.event.MouseEvent event)
javax.swing.tree.TreeCellRenderer
getTreeCellRenderer()
javax.swing.tree.TreeSelectionModel
getTreeSelectionModel()
Returns the selection model for the tree portion of the this treetable.protected JXTreeTable.TreeTableHacker
getTreeTableHacker()
TreeTableModel
getTreeTableModel()
Returns the underlying TreeTableModel for this JXTreeTable.protected boolean
hackAroundDragEnabled(java.awt.event.MouseEvent me)
decides whether we want to apply the hack for #168-jdnc.boolean
isCollapsed(int row)
Returns true if the node at the specified display row is collapsed.boolean
isCollapsed(javax.swing.tree.TreePath path)
Returns true if the node identified by path is currently collapsed, this will return false if any of the values in path are currently not being displayed.boolean
isExpanded(int row)
Returns true if the node at the specified display row is currently expanded.boolean
isExpanded(javax.swing.tree.TreePath path)
Returns true if the node identified by path is currently expanded.boolean
isHierarchical(int column)
Determines if the specified column is defined as the hierarchical column.boolean
isLargeModel()
Returns true if the tree is configured for a large model.boolean
isOverwriteRendererIcons()
Returns a boolean indicating whether the per-tree icons should be copied to the renderer on setTreeCellRenderer.boolean
isRootVisible()
Returns true if the root node of the tree is displayed.boolean
isVisible(javax.swing.tree.TreePath path)
Returns true if the value identified by path is currently viewable, which means it is either the root or all of its parents are expanded.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.protected void
processMouseEvent(java.awt.event.MouseEvent e)
Overridden to enable hit handle detection a mouseEvent which triggered a expand/collapse.void
removeTreeExpansionListener(javax.swing.event.TreeExpansionListener tel)
Removes a listener forTreeExpansion
events.void
removeTreeSelectionListener(javax.swing.event.TreeSelectionListener tsl)
Removes a listener forTreeSelection
events.void
removeTreeWillExpandListener(javax.swing.event.TreeWillExpandListener tel)
Removes a listener forTreeWillExpand
events.void
scrollPathToVisible(javax.swing.tree.TreePath path)
Makes sure all the path components in path are expanded (except for the last path component) and scrolls so that the node identified by the path is displayed.void
setClosedIcon(javax.swing.Icon icon)
Sets the specified icon as the icon to use for rendering closed container nodes.void
setCollapsedIcon(javax.swing.Icon icon)
Sets the specified icon as the icon to use for rendering collapsed nodes.void
setEnabled(boolean enabled)
void
setExpandedIcon(javax.swing.Icon icon)
Sets the specified icon as the icon to use for rendering expanded nodes.void
setExpandsSelectedPaths(boolean expand)
Sets the value of theexpandsSelectedPaths
property for the tree part.void
setFilters(FilterPipeline pipeline)
overridden to do nothing.void
setLargeModel(boolean newValue)
Specifies whether the UI should use a large model.void
setLeafIcon(javax.swing.Icon icon)
Sets the specified icon as the icon to use for rendering leaf nodes.void
setModel(javax.swing.table.TableModel tableModel)
Overrides superclass version to make sure that the specifiedTableModel
is compatible with JXTreeTable before invoking the inherited version.void
setOpenIcon(javax.swing.Icon icon)
Sets the specified icon as the icon to use for rendering open container nodes.void
setOverwriteRendererIcons(boolean overwrite)
Property to control whether per-tree icons should be copied to the renderer on setTreeCellRenderer.void
setRootVisible(boolean visible)
Determines whether or not the root node from the TreeModel is visible.void
setRowHeight(int rowHeight)
Sets the row height for this JXTreeTable and forwards the row height to the renderering tree.void
setRowHeight(int row, int rowHeight)
Throws UnsupportedOperationException because variable height rows are not supported.void
setScrollsOnExpand(boolean scroll)
Sets the value of thescrollsOnExpand
property for the tree part.void
setSelectionBackground(java.awt.Color selectionBackground)
void
setSelectionForeground(java.awt.Color selectionForeground)
void
setSelectionMode(int mode)
Overridden to ensure that private renderer state is kept in sync with the state of the component.void
setShowsRootHandles(boolean visible)
Sets the value of theshowsRootHandles
property for the tree part.void
setSortable(boolean sortable)
overridden to do nothing.void
setToggleClickCount(int clickCount)
Sets the number of mouse clicks before a node will expand or close.void
setTreeCellRenderer(javax.swing.tree.TreeCellRenderer cellRenderer)
Sets the specified TreeCellRenderer as the Tree cell renderer.void
setTreeTableModel(TreeTableModel treeModel)
Sets the data model for this JXTreeTable to the specifiedTreeTableModel
.void
sizeColumnsToFit(int resizingColumn)
Overriden to invoke supers implementation, and then, if the receiver is editing a Tree column, the editors bounds is reset.void
tableChanged(javax.swing.event.TableModelEvent e)
additionally updates filtered state.-
Methods inherited from class org.jdesktop.swingx.JXTable
addHighlighter, adjustComponentOrientation, adminSetRowHeight, columnMarginChanged, columnPropertyChange, columnRemoved, columnSelectionChanged, configureColumnControl, configureEnclosingScrollPane, convertRowIndexToModel, convertRowIndexToView, createDefaultColumnControl, createDefaultColumnModel, createDefaultColumnsFromModel, createDefaultEditors, createDefaultRenderers, createDefaultTableHeader, createHighlighterChangeListener, createLinkController, createPipelineListener, createRolloverProducer, doLayout, getAutoCreateColumnsFromModel, getColumn, getColumnControl, getColumnCount, getColumnExt, getColumnExt, getColumnFactory, getColumnMargin, getColumns, getColumns, getComponentAdapter, getCompoundHighlighter, getFillsViewportHeight, getFilterPipelineListener, getFilters, getHighlighterChangeListener, getHighlighters, getLinkController, getNewDefaultRenderer, getPreferredScrollableViewportSize, getRowCount, getRowModelMapper, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getSearchable, getSelectionMode, getSortController, getSortedColumn, getSortOrder, getSortOrder, getUIString, getUIString, getValueAt, getVisibleColumnCount, getVisibleRowCount, initializeColumnPreferredWidth, initializeColumnWidths, isAutoStartEditOnKeyStroke, isCellEditable, isColumnControlVisible, isDataChanged, isEditable, isFocusCycleRoot, isHorizontalScrollEnabled, isRolloverEnabled, isRowHeightEnabled, isSortable, isSortable, isSortable, isStructureChanged, isTerminateEditOnFocusLost, isUpdate, packAll, packColumn, packColumn, packSelected, packTable, prepareEditor, removeEditor, removeHighlighter, removeNotify, resetDefaultTableCellRendererColors, resetSortOrder, rowAtPoint, scrollCellToVisible, scrollColumnToVisible, scrollRowToVisible, setAutoResizeMode, setAutoStartEditOnKeyStroke, setColumnControl, setColumnControlVisible, setColumnFactory, setColumnMargin, setColumnSequence, setComponentOrientation, setEditable, setFillsViewportHeight, setGridColor, setHighlighters, setHorizontalScrollEnabled, setLocale, setPreferredScrollableViewportSize, setRolloverEnabled, setRowHeightEnabled, setSearchable, setSelectionModel, setShowGrid, setShowGrid, setSortOrder, setSortOrder, setTerminateEditOnFocusLost, setValueAt, setVisibleColumnCount, setVisibleRowCount, shouldSortOnChange, toggleSortOrder, toggleSortOrder, transferFocus, transferFocusBackward, unconfigureColumnControl, unconfigureEnclosingScrollPane, updateColumnControlUI, updateColumnUI, updateHighlighterUI, updateHorizontalAction, updateLocaleActionState, updateLocaleState, updateOnFilterContentChanged, updateRowHeightUI, updateUI, updateViewSizeSequence
-
Methods inherited from class javax.swing.JTable
addColumn, addColumnSelectionInterval, addNotify, addRowSelectionInterval, changeSelection, columnAdded, columnAtPoint, columnMoved, convertColumnIndexToModel, convertColumnIndexToView, createDefaultDataModel, createDefaultSelectionModel, createScrollPaneForTable, editCellAt, editingCanceled, editingStopped, getAccessibleContext, getAutoCreateRowSorter, getAutoResizeMode, getCellEditor, getCellRect, getCellSelectionEnabled, getColumn, getColumnClass, getColumnCount, getColumnModel, getColumnName, getColumnSelectionAllowed, getDefaultEditor, getDefaultRenderer, getDragEnabled, getDropLocation, getDropMode, getEditingColumn, 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, 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, setShowHorizontalLines, setShowVerticalLines, setSurrendersFocusOnKeystroke, setTableHeader, setUI, setUpdateSelectionOnSort, 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, 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, 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
-
DRAG_HACK_FLAG_KEY
public static final java.lang.String DRAG_HACK_FLAG_KEY
Key for clientProperty to decide whether to apply hack around #168-jdnc.- See Also:
- Constant Field Values
-
DROP_HACK_FLAG_KEY
public static final java.lang.String DROP_HACK_FLAG_KEY
Key for clientProperty to decide whether to apply hack around #766-swingx.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
JXTreeTable
public JXTreeTable()
Constructs a JXTreeTable using aDefaultTreeTableModel
.
-
JXTreeTable
public JXTreeTable(TreeTableModel treeModel)
Constructs a JXTreeTable using the specifiedTreeTableModel
.- Parameters:
treeModel
- model for the JXTreeTable
-
-
Method Detail
-
setSortable
public void setSortable(boolean sortable)
overridden to do nothing. TreeTable is not sortable by default, because Sorters/Filters currently don't work properly.- Overrides:
setSortable
in classJXTable
- Parameters:
sortable
- boolean indicating whether or not this table supports sortable columns- See Also:
TableColumnExt.isSortable()
-
setFilters
public void setFilters(FilterPipeline pipeline)
overridden to do nothing. TreeTable is not sortable by default, because Sorters/Filters currently don't work properly.- Overrides:
setFilters
in classJXTable
- Parameters:
pipeline
- theFilterPipeline
to use, null removes all filters.
-
setEnabled
public void setEnabled(boolean enabled)
Overridden to keep the tree's enabled in synch.
- Overrides:
setEnabled
in classjavax.swing.JComponent
-
setSelectionBackground
public void setSelectionBackground(java.awt.Color selectionBackground)
Overridden because super throws NPE on null param.
Overridden to keep the tree's selectionBackground in synch.
- Overrides:
setSelectionBackground
in classJXTable
-
setSelectionForeground
public void setSelectionForeground(java.awt.Color selectionForeground)
Overridden because super throws NPE on null param.
Overridden to keep the tree's selectionForeground in synch.
- Overrides:
setSelectionForeground
in classJXTable
-
editCellAt
public boolean editCellAt(int row, int column, java.util.EventObject e)
Overriden to invoke repaint for the particular location if the column contains the tree. This is done as the tree editor does not fill the bounds of the cell, we need the renderer to paint the tree in the background, and then draw the editor over it. You should not need to call this method directly.Additionally, there is tricksery involved to expand/collapse the nodes.
overridden to install a custom editor remover.
- Overrides:
editCellAt
in classJXTable
-
processMouseEvent
protected void processMouseEvent(java.awt.event.MouseEvent e)
Overridden to enable hit handle detection a mouseEvent which triggered a expand/collapse.- Overrides:
processMouseEvent
in classjavax.swing.JComponent
-
getTreeTableHacker
protected JXTreeTable.TreeTableHacker getTreeTableHacker()
-
createTreeTableHacker
protected JXTreeTable.TreeTableHacker createTreeTableHacker()
-
hackAroundDragEnabled
protected boolean hackAroundDragEnabled(java.awt.event.MouseEvent me)
decides whether we want to apply the hack for #168-jdnc. here: returns true if dragEnabled() and the improved drag handling is not activated (or the system property is not accessible). The given mouseEvent is not analysed. PENDING: Mustang?- Parameters:
me
- the mouseEvent that triggered a editCellAt- Returns:
- true if the hack should be applied.
-
getEditingRow
public int getEditingRow()
Overridden to provide a workaround for BasicTableUI anomaly. Make sure the UI never tries to resize the editor. The UI currently uses different techniques to paint the renderers and editors. So, overriding setBounds() is not the right thing to do for an editor. Returning -1 for the editing row in this case, ensures the editor is never painted.- Overrides:
getEditingRow
in classjavax.swing.JTable
-
setTreeTableModel
public void setTreeTableModel(TreeTableModel treeModel)
Sets the data model for this JXTreeTable to the specifiedTreeTableModel
. The same data model may be shared by any number of JXTreeTable instances.- Parameters:
treeModel
- data model for this JXTreeTable
-
getTreeTableModel
public TreeTableModel getTreeTableModel()
Returns the underlying TreeTableModel for this JXTreeTable.- Returns:
- the underlying TreeTableModel for this JXTreeTable
-
setModel
public final void setModel(javax.swing.table.TableModel tableModel)
Overrides superclass version to make sure that the specified
TableModel
is compatible with JXTreeTable before invoking the inherited version.Because JXTreeTable internally adapts an
TreeTableModel
to make it a compatible TableModel, this method should never be called directly. UsesetTreeTableModel
instead.While it is possible to obtain a reference to this adapted version of the TableModel by calling
.JTable.getModel()
, any attempt to call setModel() with that adapter will fail because the adapter might have been bound to a different JXTreeTable instance. If you want to extract the underlying TreeTableModel, which, by the way, can be shared, usegetTreeTableModel
instead
-
tableChanged
public void tableChanged(javax.swing.event.TableModelEvent e)
Description copied from class:JXTable
additionally updates filtered state.- Specified by:
tableChanged
in interfacejavax.swing.event.TableModelListener
- Overrides:
tableChanged
in classJXTable
-
getSelectionMapper
public SelectionMapper getSelectionMapper()
Overridden to return a do-nothing mapper.- Overrides:
getSelectionMapper
in classJXTable
- Returns:
SelectionMapper
-
createSelectionMapper
protected SelectionMapper createSelectionMapper()
Fix for #745-swingx: remove static selectionMaper.- Returns:
- a SelectionMapper to use with this treeTable. Implemented with a no-op.
-
setRowHeight
public final void setRowHeight(int row, int rowHeight)
Throws UnsupportedOperationException because variable height rows are not supported.- Overrides:
setRowHeight
in classJXTable
- Parameters:
row
- ignoredrowHeight
- ignored- Throws:
java.lang.UnsupportedOperationException
- because variable height rows are not supported- See Also:
JXTable.isRowHeightEnabled()
-
setRowHeight
public void setRowHeight(int rowHeight)
Sets the row height for this JXTreeTable and forwards the row height to the renderering tree.- Overrides:
setRowHeight
in classJXTable
- Parameters:
rowHeight
- height of a row.- See Also:
JXTable.isXTableRowHeightSet
-
adjustTreeRowHeight
protected void adjustTreeRowHeight(int tableRowHeight)
Forwards tableRowHeight to tree.- Parameters:
tableRowHeight
- height of a row.
-
adjustTableRowHeight
protected void adjustTableRowHeight(int treeRowHeight)
Forwards treeRowHeight to table. This is for completeness only: the rendering tree is under our total control, so we don't expect any external call to tree.setRowHeight.- Parameters:
treeRowHeight
- height of a row.
-
setSelectionMode
public void setSelectionMode(int mode)
Overridden to ensure that private renderer state is kept in sync with the state of the component. Calls the inherited version after performing the necessary synchronization. If you override this method, make sure you call this version from your version of this method.
This version maps the selection mode used by the renderer to match the selection mode specified for the table. Specifically, the modes are mapped as follows:
ListSelectionModel.SINGLE_INTERVAL_SELECTION: TreeSelectionModel.CONTIGUOUS_TREE_SELECTION; ListSelectionModel.MULTIPLE_INTERVAL_SELECTION: TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION; any other (default): TreeSelectionModel.SINGLE_TREE_SELECTION;
- Overrides:
setSelectionMode
in classjavax.swing.JTable
- Parameters:
mode
- any of the table selection modes
-
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.Overridden to decorate the tree's renderer after calling super. At that point, it is only the tree itself that has been decorated.
- Overrides:
prepareRenderer
in classJXTable
- 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
Component
used as a stamp to render the specified cell - See Also:
applyRenderer(Component, ComponentAdapter)
-
applyRenderer
protected java.awt.Component applyRenderer(java.awt.Component component, ComponentAdapter adapter)
Performs configuration of the tree's renderer if the adapter's column is the hierarchical column, does nothing otherwise.Note: this is legacy glue if the treeCellRenderer is of type DefaultTreeCellRenderer. In that case the renderer's background/foreground/Non/Selection colors are set to the tree's background/foreground depending on the adapter's selection state. Does nothing if the treeCellRenderer is backed by a ComponentProvider.
- Parameters:
component
- the rendering componentadapter
- component data adapter- Throws:
java.lang.NullPointerException
- if the specified component or adapter is null
-
setTreeCellRenderer
public void setTreeCellRenderer(javax.swing.tree.TreeCellRenderer cellRenderer)
Sets the specified TreeCellRenderer as the Tree cell renderer.- Parameters:
cellRenderer
- to use for rendering tree cells.
-
getTreeCellRenderer
public javax.swing.tree.TreeCellRenderer getTreeCellRenderer()
-
getToolTipText
public java.lang.String getToolTipText(java.awt.event.MouseEvent event)
- Overrides:
getToolTipText
in classjavax.swing.JTable
-
setCollapsedIcon
public void setCollapsedIcon(javax.swing.Icon icon)
Sets the specified icon as the icon to use for rendering collapsed nodes.- Parameters:
icon
- to use for rendering collapsed nodes- See Also:
JXTree.setCollapsedIcon(Icon)
-
setExpandedIcon
public void setExpandedIcon(javax.swing.Icon icon)
Sets the specified icon as the icon to use for rendering expanded nodes.- Parameters:
icon
- to use for rendering expanded nodes- See Also:
JXTree.setExpandedIcon(Icon)
-
setOpenIcon
public void setOpenIcon(javax.swing.Icon icon)
Sets the specified icon as the icon to use for rendering open container nodes.- Parameters:
icon
- to use for rendering open nodes- See Also:
JXTree.setOpenIcon(Icon)
-
setClosedIcon
public void setClosedIcon(javax.swing.Icon icon)
Sets the specified icon as the icon to use for rendering closed container nodes.- Parameters:
icon
- to use for rendering closed nodes- See Also:
JXTree.setClosedIcon(Icon)
-
setLeafIcon
public void setLeafIcon(javax.swing.Icon icon)
Sets the specified icon as the icon to use for rendering leaf nodes.- Parameters:
icon
- to use for rendering leaf nodes- See Also:
JXTree.setLeafIcon(Icon)
-
setOverwriteRendererIcons
public void setOverwriteRendererIcons(boolean overwrite)
Property to control whether per-tree icons should be copied to the renderer on setTreeCellRenderer.The default value is false.
- Parameters:
overwrite
- a boolean to indicate if the per-tree Icons should be copied to the new renderer on setTreeCellRenderer.- See Also:
isOverwriteRendererIcons()
,setLeafIcon(Icon)
,setOpenIcon(Icon)
,setClosedIcon(Icon)
,JXTree.setOverwriteRendererIcons(boolean)
-
isOverwriteRendererIcons
public boolean isOverwriteRendererIcons()
Returns a boolean indicating whether the per-tree icons should be copied to the renderer on setTreeCellRenderer.- Returns:
- true if a TreeCellRenderer's icons will be overwritten with the tree's Icons, false if the renderer's icons will be unchanged.
- See Also:
setOverwriteRendererIcons(boolean)
,setLeafIcon(Icon)
,setOpenIcon(Icon)
,setClosedIcon(Icon)
,JXTree.isOverwriteRendererIcons()
-
clearSelection
public void clearSelection()
Overridden to ensure that private renderer state is kept in sync with the state of the component. Calls the inherited version after performing the necessary synchronization. If you override this method, make sure you call this version from your version of this method.- Overrides:
clearSelection
in classjavax.swing.JTable
-
collapseAll
public void collapseAll()
Collapses all nodes in the treetable.
-
expandAll
public void expandAll()
Expands all nodes in the treetable.
-
collapsePath
public void collapsePath(javax.swing.tree.TreePath path)
Collapses the node at the specified path in the treetable.- Parameters:
path
- path of the node to collapse
-
expandPath
public void expandPath(javax.swing.tree.TreePath path)
Expands the the node at the specified path in the treetable.- Parameters:
path
- path of the node to expand
-
scrollPathToVisible
public void scrollPathToVisible(javax.swing.tree.TreePath path)
Makes sure all the path components in path are expanded (except for the last path component) and scrolls so that the node identified by the path is displayed. Only works when thisJTree
is contained in aJScrollPane
. (doc copied from JTree) PENDING: JW - where exactly do we want to scroll? Here: the scroll is in vertical direction only. Might need to show the tree column?- Parameters:
path
- theTreePath
identifying the node to bring into view
-
collapseRow
public void collapseRow(int row)
Collapses the row in the treetable. If the specified row index is not valid, this method will have no effect.
-
expandRow
public void expandRow(int row)
Expands the specified row in the treetable. If the specified row index is not valid, this method will have no effect.
-
isVisible
public boolean isVisible(javax.swing.tree.TreePath path)
Returns true if the value identified by path is currently viewable, which means it is either the root or all of its parents are expanded. Otherwise, this method returns false.- Returns:
- true, if the value identified by path is currently viewable; false, otherwise
-
isExpanded
public boolean isExpanded(javax.swing.tree.TreePath path)
Returns true if the node identified by path is currently expanded. Otherwise, this method returns false.- Parameters:
path
- path- Returns:
- true, if the value identified by path is currently expanded; false, otherwise
-
isExpanded
public boolean isExpanded(int row)
Returns true if the node at the specified display row is currently expanded. Otherwise, this method returns false.- Parameters:
row
- row- Returns:
- true, if the node at the specified display row is currently expanded. false, otherwise
-
isCollapsed
public boolean isCollapsed(javax.swing.tree.TreePath path)
Returns true if the node identified by path is currently collapsed, this will return false if any of the values in path are currently not being displayed.- Parameters:
path
- path- Returns:
- true, if the value identified by path is currently collapsed; false, otherwise
-
isCollapsed
public boolean isCollapsed(int row)
Returns true if the node at the specified display row is collapsed.- Parameters:
row
- row- Returns:
- true, if the node at the specified display row is currently collapsed. false, otherwise
-
getExpandedDescendants
public java.util.Enumeration<?> getExpandedDescendants(javax.swing.tree.TreePath parent)
Returns anEnumeration
of the descendants of the pathparent
that are currently expanded. Ifparent
is not currently expanded, this will returnnull
. If you expand/collapse nodes while iterating over the returnedEnumeration
this may not return all the expanded paths, or may return paths that are no longer expanded.- Parameters:
parent
- the path which is to be examined- Returns:
- an
Enumeration
of the descendents ofparent
, ornull
ifparent
is not currently expanded
-
getPathForLocation
public javax.swing.tree.TreePath getPathForLocation(int x, int y)
Returns the TreePath for a given x,y location.- Parameters:
x
- x valuey
- y value- Returns:
- the
TreePath
for the givern location.
-
getPathForRow
public javax.swing.tree.TreePath getPathForRow(int row)
Returns the TreePath for a given row.- Parameters:
row
-- Returns:
- the
TreePath
for the given row.
-
getRowForPath
public int getRowForPath(javax.swing.tree.TreePath path)
Returns the row for a given TreePath.- Parameters:
path
-- Returns:
- the row for the given
TreePath
.
-
setRootVisible
public void setRootVisible(boolean visible)
Determines whether or not the root node from the TreeModel is visible.- Parameters:
visible
- true, if the root node is visible; false, otherwise
-
isRootVisible
public boolean isRootVisible()
Returns true if the root node of the tree is displayed.- Returns:
- true if the root node of the tree is displayed
-
setScrollsOnExpand
public void setScrollsOnExpand(boolean scroll)
Sets the value of thescrollsOnExpand
property for the tree part. This property specifies whether the expanded paths should be scrolled into view. In a look and feel in which a tree might not need to scroll when expanded, this property may be ignored.- Parameters:
scroll
- true, if expanded paths should be scrolled into view; false, otherwise
-
getScrollsOnExpand
public boolean getScrollsOnExpand()
Returns the value of thescrollsOnExpand
property.- Returns:
- the value of the
scrollsOnExpand
property
-
setShowsRootHandles
public void setShowsRootHandles(boolean visible)
Sets the value of theshowsRootHandles
property for the tree part. This property specifies whether the node handles should be displayed. If handles are not supported by a particular look and feel, this property may be ignored.- Parameters:
visible
- true, if root handles should be shown; false, otherwise
-
getShowsRootHandles
public boolean getShowsRootHandles()
Returns the value of theshowsRootHandles
property.- Returns:
- the value of the
showsRootHandles
property
-
setExpandsSelectedPaths
public void setExpandsSelectedPaths(boolean expand)
Sets the value of theexpandsSelectedPaths
property for the tree part. This property specifies whether the selected paths should be expanded.- Parameters:
expand
- true, if selected paths should be expanded; false, otherwise
-
getExpandsSelectedPaths
public boolean getExpandsSelectedPaths()
Returns the value of theexpandsSelectedPaths
property.- Returns:
- the value of the
expandsSelectedPaths
property
-
getToggleClickCount
public int getToggleClickCount()
Returns the number of mouse clicks needed to expand or close a node.- Returns:
- number of mouse clicks before node is expanded
-
setToggleClickCount
public void setToggleClickCount(int clickCount)
Sets the number of mouse clicks before a node will expand or close. The default is two.- Parameters:
clickCount
- the number of clicks required to expand/collapse a node.
-
isLargeModel
public boolean isLargeModel()
Returns true if the tree is configured for a large model. The default value is false.- Returns:
- true if a large model is suggested
- See Also:
setLargeModel(boolean)
-
setLargeModel
public void setLargeModel(boolean newValue)
Specifies whether the UI should use a large model. (Not all UIs will implement this.)NOTE: this method is exposed for completeness - currently it's not recommended to use a large model because there are some issues (not yet fully understood), namely issue #25-swingx, and probably #270-swingx.
- Parameters:
newValue
- true to suggest a large model to the UI
-
addTreeExpansionListener
public void addTreeExpansionListener(javax.swing.event.TreeExpansionListener tel)
Adds a listener forTreeExpansion
events. TODO (JW): redirect event source to this.- Parameters:
tel
- a TreeExpansionListener that will be notified when a tree node is expanded or collapsed
-
removeTreeExpansionListener
public void removeTreeExpansionListener(javax.swing.event.TreeExpansionListener tel)
Removes a listener forTreeExpansion
events.- Parameters:
tel
- theTreeExpansionListener
to remove
-
addTreeSelectionListener
public void addTreeSelectionListener(javax.swing.event.TreeSelectionListener tsl)
Adds a listener forTreeSelection
events. TODO (JW): redirect event source to this.- Parameters:
tsl
- a TreeSelectionListener that will be notified when a tree node is selected or deselected
-
removeTreeSelectionListener
public void removeTreeSelectionListener(javax.swing.event.TreeSelectionListener tsl)
Removes a listener forTreeSelection
events.- Parameters:
tsl
- theTreeSelectionListener
to remove
-
addTreeWillExpandListener
public void addTreeWillExpandListener(javax.swing.event.TreeWillExpandListener tel)
Adds a listener forTreeWillExpand
events. TODO (JW): redirect event source to this.- Parameters:
tel
- a TreeWillExpandListener that will be notified when a tree node will be expanded or collapsed
-
removeTreeWillExpandListener
public void removeTreeWillExpandListener(javax.swing.event.TreeWillExpandListener tel)
Removes a listener forTreeWillExpand
events.- Parameters:
tel
- theTreeWillExpandListener
to remove
-
getTreeSelectionModel
public javax.swing.tree.TreeSelectionModel getTreeSelectionModel()
Returns the selection model for the tree portion of the this treetable.- Returns:
- selection model for the tree portion of the this treetable
-
sizeColumnsToFit
public void sizeColumnsToFit(int resizingColumn)
Overriden to invoke supers implementation, and then, if the receiver is editing a Tree column, the editors bounds is reset. The reason we have to do this is because JTable doesn't think the table is being edited, asgetEditingRow
returns -1, and therefore doesn't automaticly resize the editor for us.- Overrides:
sizeColumnsToFit
in classjavax.swing.JTable
-
isHierarchical
public boolean isHierarchical(int column)
Determines if the specified column is defined as the hierarchical column.- Parameters:
column
- zero-based index of the column in view coordinates- Returns:
- true if the column is the hierarchical column; false otherwise.
- Throws:
java.lang.IllegalArgumentException
- if the column is less than 0 or greater than or equal to the column count
-
getHierarchicalColumn
public int getHierarchicalColumn()
Returns the index of the hierarchical column. This is the column that is displayed as the tree.- Returns:
- the index of the hierarchical column, -1 if there is no hierarchical column
-
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 classJXTable
-
getCellEditor
public javax.swing.table.TableCellEditor getCellEditor(int row, int column)
- Overrides:
getCellEditor
in classjavax.swing.JTable
-
getStringAt
public java.lang.String getStringAt(int row, int column)
Returns the string representation of the cell value at the given position.Overridden to message the tree directly if the column is the view index of the hierarchical column.
PENDING JW: revisit once we switch to really using a table renderer. As is, it's a quick fix for #821-swingx: string rep for hierarchical column incorrect.
- Overrides:
getStringAt
in classJXTable
- 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.
-
getComponentAdapter
protected ComponentAdapter getComponentAdapter()
Returns the adapter that knows how to access the component data model. The component data adapter is used by filters, sorters, and highlighters.- Overrides:
getComponentAdapter
in classJXTable
- Returns:
- the adapter that knows how to access the component data model
-
-