java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JTree
public class JTree
将分层数据集显示为轮廓的控件。有关面向任务的文档和使用树的示例,请参阅 The Java Tutorial 中的 How to Use Trees 一节。
树中特定的节点可以由 TreePath
(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识。展开 节点是一个非叶节点(由返回 false 的 TreeModel.isLeaf(node)
标识),当展开 其所有祖先时,该节点将显示其子节点。折叠 节点是隐藏它们的节点。隐藏 节点是位于折叠祖先下面的节点。所有可查看 节点的父节点都是可以展开的,但是可以显示它们,也可以不显示它们。显示 节点是可查看的并且位于可以看到它的显示区域。
以下 JTree
方法使用 "visible" 来表示 "displayed":
isRootVisible()
setRootVisible()
scrollPathToVisible()
scrollRowToVisible()
getVisibleRowCount()
setVisibleRowCount()
下一组 JTree
方法使用 "visible" 表示 "viewable"(在展开的父节点下面):
isVisible()
makeVisible()
如果您有兴趣了解选择何时更改,请实现 TreeSelectionListener
接口,并使用方法 addTreeSelectionListener
添加实例。当选择更改时,将调用 valueChanged
,即如果用户在同一节点上单击两次,则仅调用 valueChanged
一次。
如果有兴趣检测双击事件或用户何时单击节点(不管是否选中它),建议您执行以下操作:
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);注:上述示例同时获取路径和行,但是您只需要获取感兴趣的内容。
要使用 JTree
显示复合节点(例如,同时包含图形图标和文本的节点),请为 TreeCellRenderer
创建子类,并使用 setCellRenderer(javax.swing.tree.TreeCellRenderer)
通知树使用它。要编辑此类节点,请为 TreeCellEditor
创建子类,并使用 setCellEditor(javax.swing.tree.TreeCellEditor)
。
与所有 JComponent
类一样,可以使用 InputMap
和 ActionMap
将 Action
对象与 KeyStroke
关联,并在指定条件下执行操作。
警告:Swing 不是线程安全的。有关更多信息,请参阅 Swing's Threading Policy。
警告:此类的序列化对象与以后的 Swing 版本不兼容。当前序列化支持适用于短期存储,或适用于在运行相同 Swing 版本的应用程序之间进行 RMI(Remote Method Invocation,远程方法调用)。从 1.4 版本开始,已在 java.beans
包中添加了支持所有 JavaBeansTM 长期存储的功能。请参见 XMLEncoder
。
嵌套类摘要 | |
---|---|
protected class |
JTree.AccessibleJTree 此类实现 JTree 类的可访问性支持。 |
static class |
JTree.DropLocation TransferHandler.DropLocation 的一个子类,表示 JTree 的放置位置 (drop location)。 |
static class |
JTree.DynamicUtilTreeNode DynamicUtilTreeNode 可以包装 vectors/hashtables/arrays/strings 并根据需要创建适当的子树节点。 |
protected static class |
JTree.EmptySelectionModel EmptySelectionModel 是一个不允许选择任何内容的 TreeSelectionModel 。 |
protected class |
JTree.TreeModelHandler 在移除或更改节点时,监听模型并相应地更新 expandedState 。 |
protected class |
JTree.TreeSelectionRedirector 使用 JTree 创建一个作为源的新 TreeSelectionEvent 并将其传递到所有侦听器的句柄。 |
从类 javax.swing.JComponent 继承的嵌套类/接口 |
---|
JComponent.AccessibleJComponent |
从类 java.awt.Container 继承的嵌套类/接口 |
---|
Container.AccessibleAWTContainer |
从类 java.awt.Component 继承的嵌套类/接口 |
---|
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy |
字段摘要 | |
---|---|
static String |
ANCHOR_SELECTION_PATH_PROPERTY 定位选择路径的绑定属性名称。 |
static String |
CELL_EDITOR_PROPERTY cellEditor 的绑定属性名称。 |
static String |
CELL_RENDERER_PROPERTY cellRenderer 的绑定属性名称。 |
protected TreeCellEditor |
cellEditor 条目编辑器。 |
protected TreeCellRenderer |
cellRenderer 用于绘制节点的单元格。 |
protected boolean |
editable 树是否可以编辑?默认值为 false。 |
static String |
EDITABLE_PROPERTY editable 的绑定属性名称。 |
static String |
EXPANDS_SELECTED_PATHS_PROPERTY 展开选择路径属性的绑定属性名称 |
static String |
INVOKES_STOP_CELL_EDITING_PROPERTY messagesStopCellEditing 的绑定属性名称。 |
protected boolean |
invokesStopCellEditing 如果为 true,则在通过更改选择、更改树中的数据或通过其他方法停止编辑时,会调用 stopCellEditing ,并保存更改。 |
static String |
LARGE_MODEL_PROPERTY largeModel 的绑定属性名称。 |
protected boolean |
largeModel 此树是否为大模型?这是一种代码优化设置。 |
static String |
LEAD_SELECTION_PATH_PROPERTY leadSelectionPath 的绑定属性名称。 |
static String |
ROOT_VISIBLE_PROPERTY rootVisible 的绑定属性名称。 |
protected boolean |
rootVisible 如果显示根节点,则为 true;如果其子节点为最高可见节点,则为 false。 |
static String |
ROW_HEIGHT_PROPERTY rowHeight 的绑定属性名称。 |
protected int |
rowHeight 用于每个显示行的高度。 |
static String |
SCROLLS_ON_EXPAND_PROPERTY scrollsOnExpand 的绑定属性名称。 |
protected boolean |
scrollsOnExpand 如果为 true,则当展开节点时,将滚动尽可能多的子节点,以便看到它们。 |
static String |
SELECTION_MODEL_PROPERTY selectionModel 的绑定属性名称。 |
protected TreeSelectionModel |
selectionModel 对此树中选择的节点集建模。 |
protected JTree.TreeSelectionRedirector |
selectionRedirector 创建一个新事件,并将它传递给 selectionListeners 。 |
static String |
SHOWS_ROOT_HANDLES_PROPERTY showsRootHandles 的绑定属性名称。 |
protected boolean |
showsRootHandles 如果在树的最高层显示句柄,则为 True。 |
static String |
TOGGLE_CLICK_COUNT_PROPERTY toggleClickCount 的绑定属性名称。 |
protected int |
toggleClickCount 展开节点之前的鼠标单击数。 |
static String |
TREE_MODEL_PROPERTY treeModel 的绑定属性名称。 |
protected TreeModel |
treeModel 定义此对象显示的树的模型。 |
protected TreeModelListener |
treeModelListener 更新 expandedState 。 |
static String |
VISIBLE_ROW_COUNT_PROPERTY visibleRowCount 的绑定属性名称。 |
protected int |
visibleRowCount 一次可见的行数。 |
从类 javax.swing.JComponent 继承的字段 |
---|
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW |
从类 java.awt.Component 继承的字段 |
---|
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT |
从接口 java.awt.image.ImageObserver 继承的字段 |
---|
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH |
构造方法摘要 | |
---|---|
JTree() 返回带有示例模型的 JTree 。 |
|
JTree(Hashtable<?,?> value) 返回从 Hashtable 创建的 JTree ,它不显示根。 |
|
JTree(Object[] value) 返回 JTree ,指定数组的每个元素作为不被显示的新根节点的子节点。 |
|
JTree(TreeModel newModel) 返回 JTree 的一个实例,它显示根节点 - 使用指定的数据模型创建树。 |
|
JTree(TreeNode root) 返回 JTree ,指定的 TreeNode 作为其根,它显示根节点。 |
|
JTree(TreeNode root, boolean asksAllowsChildren) 返回 JTree ,指定的 TreeNode 作为其根,它用指定的方式显示根节点,并确定节点是否为叶节点。 |
|
JTree(Vector<?> value) 返回 JTree ,指定 Vector 的每个元素作为不被显示的新根节点的子节点。 |
方法摘要 | |
---|---|
void |
addSelectionInterval(int index0, int index1) 将 index0 和 index1(包含)之间的路径添加到该选择。 |
void |
addSelectionPath(TreePath path) 将由指定的 TreePath 标识的节点添加到当前选择。 |
void |
addSelectionPaths(TreePath[] paths) 将路径数组中的每个路径添加到当前选择。 |
void |
addSelectionRow(int row) 将指定行处的路径添加到当前选择。 |
void |
addSelectionRows(int[] rows) 将每个指定行处的路径添加到当前选择。 |
void |
addTreeExpansionListener(TreeExpansionListener tel) 为 TreeExpansion 事件添加侦听器。 |
void |
addTreeSelectionListener(TreeSelectionListener tsl) 为 TreeSelection 事件添加侦听器。 |
void |
addTreeWillExpandListener(TreeWillExpandListener tel) 为 TreeWillExpand 事件添加侦听器。 |
void |
cancelEditing() 取消当前编辑会话。 |
void |
clearSelection() 清除该选择。 |
protected void |
clearToggledPaths() 清除切换的树路径的缓存。 |
void |
collapsePath(TreePath path) 确保指定路径标识的节点是折叠的,并且可查看。 |
void |
collapseRow(int row) 确保指定行中的节点是折叠的。 |
String |
convertValueToText(Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) 通过渲染器调用以将指定值转换为文本。 |
protected static TreeModel |
createTreeModel(Object value) 返回一个 TreeModel ,它包装指定的对象。 |
protected TreeModelListener |
createTreeModelListener() 创建并返回 TreeModelHandler 的一个实例。 |
void |
expandPath(TreePath path) 确保指定路径标识的节点展开,并且可查看。 |
void |
expandRow(int row) 确保指定行中的节点展开,并且可查看。 |
void |
fireTreeCollapsed(TreePath path) 通知已注册对获得此事件类型通知感兴趣的所有侦听器。 |
void |
fireTreeExpanded(TreePath path) 通知已注册对获得此事件类型通知感兴趣的所有侦听器。 |
void |
fireTreeWillCollapse(TreePath path) 通知已注册对获得此事件类型通知感兴趣的所有侦听器。 |
void |
fireTreeWillExpand(TreePath path) 通知已注册对获得此事件类型通知感兴趣的所有侦听器。 |
protected void |
fireValueChanged(TreeSelectionEvent e) 通知已注册对获得此事件类型通知感兴趣的所有侦听器。 |
AccessibleContext |
getAccessibleContext() 获取与此 JTree 关联的 AccessibleContext。 |
TreePath |
getAnchorSelectionPath() 返回标识为定位的路径。 |
TreeCellEditor |
getCellEditor() 返回用于编辑树中条目的编辑器。 |
TreeCellRenderer |
getCellRenderer() 返回正在呈现每个单元格的当前 TreeCellRenderer 。 |
TreePath |
getClosestPathForLocation(int x, int y) 返回离 x,y 最近的节点的路径。 |
int |
getClosestRowForLocation(int x, int y) 返回离 x,y 最近的节点的行。 |
protected static TreeModel |
getDefaultTreeModel() 创建并返回一个示例 TreeModel 。 |
protected Enumeration<TreePath> |
getDescendantToggledPaths(TreePath parent) 返回已展开且为 parent 的子路径的 TreePath 的 Enumeration 。 |
boolean |
getDragEnabled() 返回是否启用自动拖动处理。 |
JTree.DropLocation |
getDropLocation() 返回该组件上 DnD 操作期间此组件应该视觉上指示为放置操作的位置;如果当前未显示任何位置,则返回 null 。 |
DropMode |
getDropMode() 返回此组件的放置模式。 |
TreePath |
getEditingPath() 返回当前正在编辑的元素的路径。 |
Enumeration<TreePath> |
getExpandedDescendants(TreePath parent) 返回当前展开的 parent 路径的子路径的 Enumeration 。 |
boolean |
getExpandsSelectedPaths() 返回 expandsSelectedPaths 属性。 |
boolean |
getInvokesStopCellEditing() 返回告知编辑中断时发生了什么情况的指示符。 |
Object |
getLastSelectedPathComponent() 返回当前选择的第一个节点中的最后一个路径组件。 |
TreePath |
getLeadSelectionPath() 返回标识为前导的路径。 |
int |
getLeadSelectionRow() 返回与前导路径对应的行索引。 |
int |
getMaxSelectionRow() 返回选择的最后一行。 |
int |
getMinSelectionRow() 获取选择的第一行。 |
TreeModel |
getModel() 返回正在提供数据的 TreeModel 。 |
TreePath |
getNextMatch(String prefix, int startingRow, Position.Bias bias) 将 TreePath 返回到以一个前缀开头的下一个树元素。 |
protected TreePath[] |
getPathBetweenRows(int index0, int index1) 返回 JTreePath 实例,它表示 index0 和 index1(包括 index1)之间的路径。 |
Rectangle |
getPathBounds(TreePath path) 返回将指定节点绘入的 Rectangle 。 |
TreePath |
getPathForLocation(int x, int y) 返回指定位置处的节点路径。 |
TreePath |
getPathForRow(int row) 返回指定行的路径。 |
Dimension |
getPreferredScrollableViewportSize() 返回 JTree 的首选显示大小。 |
Rectangle |
getRowBounds(int row) 返回将指定行处的节点绘入的 Rectangle 。 |
int |
getRowCount() 返回当前正在显示的行数。 |
int |
getRowForLocation(int x, int y) 返回指定位置的行。 |
int |
getRowForPath(TreePath path) 返回显示由指定路径标识的节点的行。 |
int |
getRowHeight() 返回每个行的高度。 |
int |
getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction) 返回块增量的数量,它是基于 orientation 的 visibleRect 高度或宽度。 |
boolean |
getScrollableTracksViewportHeight() 返回 false 指示视口的高度不能确定表的高度,除非树的首选高度小于视口高度。 |
boolean |
getScrollableTracksViewportWidth() 返回 false 指示视口的宽度不能确定表的宽度,除非树的首选宽度小于视口宽度。 |
int |
getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction) 返回滚动时增加的数量。 |
boolean |
getScrollsOnExpand() 返回 scrollsOnExpand 属性的值。 |
int |
getSelectionCount() 返回选择的节点数。 |
TreeSelectionModel |
getSelectionModel() 返回选择的模型。 |
TreePath |
getSelectionPa
|