- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JTree
-
- All Implemented Interfaces:
ImageObserver
,MenuContainer
,Serializable
,Accessible
,Scrollable
@JavaBean(defaultProperty="UI", description="A component that displays a set of hierarchical data as an outline.") public class JTree extends JComponent implements Scrollable, Accessible
A control that displays a set of hierarchical data as an outline. You can find task-oriented documentation and examples of using trees in How to Use Trees, a section in The Java Tutorial.A specific node in a tree can be identified either by a
The followingTreePath
(an object that encapsulates a node and all of its ancestors), or by its display row, where each row in the display area displays one node. An expanded node is a non-leaf node (as identified byTreeModel.isLeaf(node)
returning false) that will displays its children when all its ancestors are expanded. A collapsed node is one which hides them. A hidden node is one which is under a collapsed ancestor. All of a viewable nodes parents are expanded, but may or may not be displayed. A displayed node is both viewable and in the display area, where it can be seen.JTree
methods use "visible" to mean "displayed":isRootVisible()
setRootVisible()
scrollPathToVisible()
scrollRowToVisible()
getVisibleRowCount()
setVisibleRowCount()
JTree
methods use "visible" to mean "viewable" (under an expanded parent):isVisible()
makeVisible()
TreeSelectionListener
interface and add the instance using the methodaddTreeSelectionListener
.valueChanged
will be invoked when the selection changes, that is if the user clicks twice on the same nodevalueChanged
will only be invoked once.If you are interested in detecting either double-click events or when a user clicks on a node, regardless of whether or not it was selected, we recommend you do the following:
final JTree tree = ...; MouseListener ml = new MouseAdapter() { public void mousePressed(MouseEvent e) { int selRow = tree.getRowForLocation(e.getX(), e.getY()); TreePath selPath = tree.getPathForLocation(e.getX(), e.getY()); if(selRow != -1) { if(e.getClickCount() == 1) { mySingleClick(selRow, selPath); } else if(e.getClickCount() == 2) { myDoubleClick(selRow, selPath); } } } }; tree.addMouseListener(ml);
NOTE: This example obtains both the path and row, but you only need to get the one you're interested in.To use
JTree
to display compound nodes (for example, nodes containing both a graphic icon and text), subclassTreeCellRenderer
and usesetCellRenderer(javax.swing.tree.TreeCellRenderer)
to tell the tree to use it. To edit such nodes, subclassTreeCellEditor
and usesetCellEditor(javax.swing.tree.TreeCellEditor)
.Like all
Warning: Swing is not thread safe. For more information see Swing's Threading Policy.JComponent
classes, you can useInputMap
andActionMap
to associate anAction
object with aKeyStroke
and execute the action under specified conditions.Warning: Serialized objects of this class will not be compatible with future Swing releases. The current serialization support is appropriate for short term storage or RMI between applications running the same version of Swing. As of 1.4, support for long term storage of all JavaBeans™ has been added to the
java.beans
package. Please seeXMLEncoder
.- Since:
- 1.2
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
JTree.AccessibleJTree
This class implements accessibility support for theJTree
class.static class
JTree.DropLocation
A subclass ofTransferHandler.DropLocation
representing a drop location for aJTree
.static class
JTree.DynamicUtilTreeNode
DynamicUtilTreeNode
can wrap vectors/hashtables/arrays/strings and create the appropriate children tree nodes as necessary.protected static class
JTree.EmptySelectionModel
EmptySelectionModel
is aTreeSelectionModel
that does not allow anything to be selected.protected class
JTree.TreeModelHandler
Listens to the model and updates theexpandedState
accordingly when nodes are removed, or changed.protected class
JTree.TreeSelectionRedirector
Handles creating a newTreeSelectionEvent
with theJTree
as the source and passing it off to all the listeners.-
Nested classes/interfaces declared in class javax.swing.JComponent
JComponent.AccessibleJComponent
-
Nested classes/interfaces declared in class java.awt.Container
Container.AccessibleAWTContainer
-
Nested classes/interfaces declared in class java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
-
-
Field Summary
Fields Modifier and Type Field Description static String
ANCHOR_SELECTION_PATH_PROPERTY
Bound property name for anchor selection path.static String
CELL_EDITOR_PROPERTY
Bound property name forcellEditor
.static String
CELL_RENDERER_PROPERTY
Bound property name forcellRenderer
.protected TreeCellEditor
cellEditor
Editor for the entries.protected TreeCellRenderer
cellRenderer
The cell used to draw nodes.protected boolean
editable
Is the tree editable?static String
EDITABLE_PROPERTY
Bound property name foreditable
.static String
EXPANDS_SELECTED_PATHS_PROPERTY
Bound property name for expands selected paths propertystatic String
INVOKES_STOP_CELL_EDITING_PROPERTY
Bound property name formessagesStopCellEditing
.protected boolean
invokesStopCellEditing
If true, when editing is to be stopped by way of selection changing, data in tree changing or other meansstopCellEditing
is invoked, and changes are saved.static String
LARGE_MODEL_PROPERTY
Bound property name forlargeModel
.protected boolean
largeModel
Is this tree a large model?static String
LEAD_SELECTION_PATH_PROPERTY
Bound property name forleadSelectionPath
.static String
ROOT_VISIBLE_PROPERTY
Bound property name forrootVisible
.protected boolean
rootVisible
True if the root node is displayed, false if its children are the highest visible nodes.static String
ROW_HEIGHT_PROPERTY
Bound property name forrowHeight
.protected int
rowHeight
Height to use for each display row.static String
SCROLLS_ON_EXPAND_PROPERTY
Bound property name forscrollsOnExpand
.protected boolean
scrollsOnExpand
If true, when a node is expanded, as many of the descendants are scrolled to be visible.static String
SELECTION_MODEL_PROPERTY
Bound property name for selectionModel.protected TreeSelectionModel
selectionModel
Models the set of selected nodes in this tree.protected JTree.TreeSelectionRedirector
selectionRedirector
Creates a new event and passed it off theselectionListeners
.static String
SHOWS_ROOT_HANDLES_PROPERTY
Bound property name forshowsRootHandles
.protected boolean
showsRootHandles
True if handles are displayed at the topmost level of the tree.static String
TOGGLE_CLICK_COUNT_PROPERTY
Bound property name fortoggleClickCount
.protected int
toggleClickCount
Number of mouse clicks before a node is expanded.static String
TREE_MODEL_PROPERTY
Bound property name fortreeModel
.protected TreeModel
treeModel
The model that defines the tree displayed by this object.protected TreeModelListener
treeModelListener
Updates theexpandedState
.static String
VISIBLE_ROW_COUNT_PROPERTY
Bound property name forvisibleRowCount
.protected int
visibleRowCount
Number of rows to make visible at one time.-
Fields declared in class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
Fields declared in class java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
-
Fields declared in interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
-
-
Constructor Summary
Constructors Constructor Description JTree()
Returns aJTree
with a sample model.JTree(Object[] value)
Returns aJTree
with each element of the specified array as the child of a new root node which is not displayed.JTree(Hashtable<?,?> value)
Returns aJTree
created from aHashtable
which does not display with root.JTree(Vector<?> value)
Returns aJTree
with each element of the specifiedVector
as the child of a new root node which is not displayed.JTree(TreeModel newModel)
Returns an instance ofJTree
which displays the root node -- the tree is created using the specified data model.JTree(TreeNode root)
Returns aJTree
with the specifiedTreeNode
as its root, which displays the root node.JTree(TreeNode root, boolean asksAllowsChildren)
Returns aJTree
with the specifiedTreeNode
as its root, which displays the root node and which decides whether a node is a leaf node in the specified manner.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addSelectionInterval(int index0, int index1)
Adds the specified rows (inclusive) to the selection.void
addSelectionPath(TreePath path)
Adds the node identified by the specifiedTreePath
to the current selection.void
addSelectionPaths(TreePath[] paths)
Adds each path in the array of paths to the current selection.void
addSelectionRow(int row)
Adds the path at the specified row to the current selection.void
addSelectionRows(int[] rows)
Adds the paths at each of the specified rows to the current selection.void
addTreeExpansionListener(TreeExpansionListener tel)
Adds a listener forTreeExpansion
events.void
addTreeSelectionListener(TreeSelectionListener tsl)
Adds a listener forTreeSelection
events.void
addTreeWillExpandListener(TreeWillExpandListener tel)
Adds a listener forTreeWillExpand
events.void
cancelEditing()
Cancels the current editing session.void
clearSelection()
Clears the selection.protected void
clearToggledPaths()
Clears the cache of toggled tree paths.void
collapsePath(TreePath path)
Ensures that the node identified by the specified path is collapsed and viewable.void
collapseRow(int row)
Ensures that the node in the specified row is collapsed.String
convertValueToText(Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus)
Called by the renderers to convert the specified value to text.protected static TreeModel
createTreeModel(Object value)
Returns aTreeModel
wrapping the specified object.protected TreeModelListener
createTreeModelListener()
Creates and returns an instance ofTreeModelHandler
.void
expandPath(TreePath path)
Ensures that the node identified by the specified path is expanded and viewable.void
expandRow(int row)
Ensures that the node in the specified row is expanded and viewable.void
fireTreeCollapsed(TreePath path)
Notifies all listeners that have registered interest for notification on this event type.void
fireTreeExpanded(TreePath path)
Notifies all listeners that have registered interest for notification on this event type.void
fireTreeWillCollapse(TreePath path)
Notifies all listeners that have registered interest for notification on this event type.void
fireTreeWillExpand(TreePath path)
Notifies all listeners that have registered interest for notification on this event type.protected void
fireValueChanged(TreeSelectionEvent e)
Notifies all listeners that have registered interest for notification on this event type.AccessibleContext
getAccessibleContext()
Gets the AccessibleContext associated with this JTree.TreePath
getAnchorSelectionPath()
Returns the path identified as the anchor.TreeCellEditor
getCellEditor()
Returns the editor used to edit entries in the tree.TreeCellRenderer
getCellRenderer()
Returns the currentTreeCellRenderer
that is rendering each cell.TreePath
getClosestPathForLocation(int x, int y)
Returns the path to the node that is closest to x,y.int
getClosestRowForLocation(int x, int y)
Returns the row to the node that is closest to x,y.protected static TreeModel
getDefaultTreeModel()
Creates and returns a sampleTreeModel
.protected Enumeration<TreePath>
getDescendantToggledPaths(TreePath parent)
Returns anEnumeration
ofTreePaths
that have been expanded that are descendants ofparent
.boolean
getDragEnabled()
Returns whether or not automatic drag handling is enabled.JTree.DropLocation
getDropLocation()
Returns the location that this component should visually indicate as the drop location during a DnD operation over the component, ornull
if no location is to currently be shown.DropMode
getDropMode()
Returns the drop mode for this component.TreePath
getEditingPath()
Returns the path to the element that is currently being edited.Enumeration<TreePath>
getExpandedDescendants(TreePath parent)
Returns anEnumeration
of the descendants of the pathparent
that are currently expanded.boolean
getExpandsSelectedPaths()
Returns theexpandsSelectedPaths
property.boolean
getInvokesStopCellEditing()
Returns the indicator that tells what happens when editing is interrupted.Object
getLastSelectedPathComponent()
Returns the last path component of the selected path.TreePath
getLeadSelectionPath()
Returns the path identified as the lead.int
getLeadSelectionRow()
Returns the row index corresponding to the lead path.int
getMaxSelectionRow()
Returns the largest selected row.int
getMinSelectionRow()
Returns the smallest selected row.TreeModel
getModel()
Returns theTreeModel
that is providing the data.TreePath
getNextMatch(String prefix, int startingRow, Position.Bias bias)
Returns the TreePath to the next tree element that begins with a prefix.protected TreePath[]
getPathBetweenRows(int index0, int index1)
Returns the paths (inclusive) between the specified rows.Rectangle
getPathBounds(TreePath path)
Returns theRectangle
that the specified node will be drawn into.TreePath
getPathForLocation(int x, int y)
Returns the path for the node at the specified location.TreePath
getPathForRow(int row)
Returns the path for the specified row.Dimension
getPreferredScrollableViewportSize()
Returns the preferred display size of aJTree
.Rectangle
getRowBounds(int row)
Returns theRectangle
that the node at the specified row is drawn in.int
getRowCount()
Returns the number of viewable nodes.int
getRowForLocation(int x, int y)
Returns the row for the specified location.int
getRowForPath(TreePath path)
Returns the row that displays the node identified by the specified path.int
getRowHeight()
Returns the height of each row.int
getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
Returns the amount for a block increment, which is the height or width ofvisibleRect
, based onorientation
.boolean
getScrollableTracksViewportHeight()
Returns false to indicate that the height of the viewport does not determine the height of the table, unless the preferred height of the tree is smaller than the viewports height.boolean
getScrollableTracksViewportWidth()
Returns false to indicate that the width of the viewport does not determine the width of the table, unless the preferred width of the tree is smaller than the viewports width.int
getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
Returns the amount to increment when scrolling.boolean
getScrollsOnExpand()
Returns the value of thescrollsOnExpand
property.int
getSelectionCount()
Returns the number of nodes selected.TreeSelectionModel
getSelectionModel()
Returns the model for selections.TreePath
getSelectionPath()
Returns the path to the first selected node.TreePath[]
getSelectionPaths()
Returns the paths of all selected values.int[]
getSelectionRows()
Returns all of the currently selected rows.boolean
getShowsRootHandles()
Returns the value of theshowsRootHandles
property.int
getToggleClickCount()
Returns the number of mouse clicks needed to expand or close a node.String
getToolTipText(MouseEvent event)
OverridesJComponent
'sgetToolTipText
method in order to allow renderer's tips to be used if it has text set.TreeExpansionListener[]
getTreeExpansionListeners()
Returns an array of all theTreeExpansionListener
s added to this JTree with addTreeExpansionListener().TreeSelectionListener[]
getTreeSelectionListeners()
Returns an array of all theTreeSelectionListener
s added to this JTree with addTreeSelectionListener().TreeWillExpandListener[]
getTreeWillExpandListeners()
Returns an array of all theTreeWillExpandListener
s added to this JTree with addTreeWillExpandListener().TreeUI
getUI()
Returns the L&F object that renders this component.String
getUIClassID()
Returns the name of the L&F class that renders this component.int
getVisibleRowCount()
Returns the number of rows that are displayed in the display area.boolean
hasBeenExpanded(TreePath path)
Returns true if the node identified by the path has ever been expanded.boolean
isCollapsed(int row)
Returns true if the node at the specified display row is collapsed.boolean
isCollapsed(TreePath path)
Returns true if the value identified by path is currently collapsed, this will return false if any of the values in path are currently not being displayed.boolean
isEditable()
Returns true if the tree is editable.boolean
isEditing()
Returns true if the tree is being edited.boolean
isExpanded(int row)
Returns true if the node at the specified display row is currently expanded.boolean
isExpanded(TreePath path)
Returns true if the node identified by the path is currently expanded,boolean
isFixedRowHeight()
Returns true if the height of each display row is a fixed size.boolean
isLargeModel()
Returns true if the tree is configured for a large model.boolean
isPathEditable(TreePath path)
ReturnsisEditable
.boolean
isPathSelected(TreePath path)
Returns true if the item identified by the path is currently selected.boolean
isRootVisible()
Returns true if the root node of the tree is displayed.boolean
isRowSelected(int row)
Returns true if the node identified by row is selected.boolean
isSelectionEmpty()
Returns true if the selection is currently empty.boolean
isVisible(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.void
makeVisible(TreePath path)
Ensures that the node identified by path is currently viewable.protected String
paramString()
Returns a string representation of thisJTree
.protected boolean
removeDescendantSelectedPaths(TreePath path, boolean includePath)
Removes any paths in the selection that are descendants ofpath
.protected void
removeDescendantToggledPaths(Enumeration<TreePath> toRemove)
Removes any descendants of theTreePaths
intoRemove
that have been expanded.void
removeSelectionInterval(int index0, int index1)
Removes the specified rows (inclusive) from the selection.void
removeSelectionPath(TreePath path)
Removes the node identified by the specified path from the current selection.void
removeSelectionPaths(TreePath[] paths)
Removes the nodes identified by the specified paths from the current selection.void
removeSelectionRow(int row)
Removes the row at the indexrow
from the current selection.void
removeSelectionRows(int[] rows)
Removes the rows that are selected at each of the specified rows.void
removeTreeExpansionListener(TreeExpansionListener tel)
Removes a listener forTreeExpansion
events.void
removeTreeSelectionListener(TreeSelectionListener tsl)
Removes aTreeSelection
listener.void
removeTreeWillExpandListener(TreeWillExpandListener tel)
Removes a listener forTreeWillExpand
events.void
scrollPathToVisible(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
scrollRowToVisible(int row)
Scrolls the item identified by row until it is displayed.void
setAnchorSelectionPath(TreePath newPath)
Sets the path identified as the anchor.void
setCellEditor(TreeCellEditor cellEditor)
Sets the cell editor.void
setCellRenderer(TreeCellRenderer x)
Sets theTreeCellRenderer
that will be used to draw each cell.void
setDragEnabled(boolean b)
Turns on or off automatic drag handling.void
setDropMode(DropMode dropMode)
Sets the drop mode for this component.void
setEditable(boolean flag)
Determines whether the tree is editable.protected void
setExpandedState(TreePath path, boolean state)
Sets the expanded state of thisJTree
.void
setExpandsSelectedPaths(boolean newValue)
Configures theexpandsSelectedPaths
property.void
setInvokesStopCellEditing(boolean newValue)
Determines what happens when editing is interrupted by selecting another node in the tree, a change in the tree's data, or by some other means.void
setLargeModel(boolean newValue)
Specifies whether the UI should use a large model.void
setLeadSelectionPath(TreePath newPath)
Sets the path identifies as the lead.void
setModel(TreeModel newModel)
Sets theTreeModel
that will provide the data.void
setRootVisible(boolean rootVisible)
Determines whether or not the root node from theTreeModel
is visible.void
setRowHeight(int rowHeight)
Sets the height of each cell, in pixels.void
setScrollsOnExpand(boolean newValue)
Sets thescrollsOnExpand
property, which determines whether the tree might scroll to show previously hidden children.void
setSelectionInterval(int index0, int index1)
Selects the rows in the specified interval (inclusive).void
setSelectionModel(TreeSelectionModel selectionModel)
Sets the tree's selection model.void
setSelectionPath(TreePath path)
Selects the node identified by the specified path.void
setSelectionPaths(TreePath[] paths)
Selects the nodes identified by the specified array of paths.void
setSelectionRow(int row)
Selects the node at the specified row in the display.void
setSelectionRows(int[] rows)
Selects the nodes corresponding to each of the specified rows in the display.void
setShowsRootHandles(boolean newValue)
Sets the value of theshowsRootHandles
property, which specifies whether the node handles should be displayed.void
setToggleClickCount(int clickCount)
Sets the number of mouse clicks before a node will expand or close.void
setUI(TreeUI ui)
Sets the L&F object that renders this component.void
setVisibleRowCount(int newCount)
Sets the number of rows that are to be displayed.void
startEditingAtPath(TreePath path)
Selects the node identified by the specified path and initiates editing.boolean
stopEditing()
Ends the current editing session.void
treeDidChange()
Sent when the tree has changed enough that we need to resize the bounds, but not enough that we need to remove the expanded node set (e.g nodes were expanded or collapsed, or nodes were inserted into the tree).void
updateUI()
Notification from theUIManager
that the L&F has changed.-
Methods declared in class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, 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,
-
-