|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一个类 下一个类 | 框架 无框架 | |||||||||
| 摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 | |||||||||
java.lang.Objectjava.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 |
getSelectionPath()
返回首选节点的路径。 |
TreePath[] |
getSelectionPaths()
返回所有选择值的路径。 |
int[] |
getSelectionRows()
返回所有当前选择的行。 |
boolean |
getShowsRootHandles()
返回 showsRootHandles 属性的值。 |
int |
getToggleClickCount()
返回展开或关闭节点所需的鼠标单击数。 |
String |
getToolTipText(MouseEvent event)
重写 JComponent 的 getToolTipText 方法,以允许使用渲染器的提示(如果渲染器设置了文本)。 |
TreeExpansionListener[] |
getTreeExpansionListeners()
返回使用 addTreeExpansionListener() 添加到此 JTree 的所有 TreeExpansionListener 的数组。 |
TreeSelectionListener[] |
getTreeSelectionListeners()
返回使用 addTreeSelectionListener() 添加到此 JTree 的所有 TreeSelectionListener 的数组。 |
TreeWillExpandListener[] |
getTreeWillExpandListeners()
返回使用 addTreeWillExpandListener() 添加到此 JTree 的所有 TreeWillExpandListener 的数组。 |
TreeUI |
getUI()
返回呈现此组件的 L&F 对象。 |
String |
getUIClassID()
返回呈现此组件的 L&F 类的名称。 |
int |
getVisibleRowCount()
返回显示区域中显示的行数。 |
boolean |
hasBeenExpanded(TreePath path)
如果已经展开路径标识的节点,则返回 true。 |
boolean |
isCollapsed(int row)
如果折叠了指定显示行处的节点,则返回 true。 |
boolean |
isCollapsed(TreePath path)
如果当前折叠了路径标识的值,则返回 true,如果当前未显示路径中的任何值,则返回 false。 |
boolean |
isEditable()
如果树可编辑,则返回 true。 |
boolean |
isEditing()
如果正在编辑树,则返回 true。 |
boolean |
isExpanded(int row)
如果当前展开了指定显示行处的节点,则返回 true。 |
boolean |
isExpanded(TreePath path)
如果当前展开了路径标识的节点,则返回 true。 |
boolean |
isFixedRowHeight()
如果每个显示行的高度为固定大小,则返回 true。 |
boolean |
isLargeModel()
如果将树配置为大模型,则返回 true。 |
boolean |
isPathEditable(TreePath path)
返回 isEditable。 |
boolean |
isPathSelected(TreePath path)
如果当前选择了路径标识的条目,则返回 true。 |
boolean |
isRootVisible()
如果显示树的根节点,则返回 true。 |
boolean |
isRowSelected(int row)
如果选择了行标识的节点,则返回 true。 |
boolean |
isSelectionEmpty()
如果该选择当前为空,则返回 true。 |
boolean |
isVisible(TreePath path)
如果当前可查看路径标识的值,则返回 true,这意味着该路径或者是根路径,或者它的所有父路径均被展开。 |
void |
makeVisible(TreePath path)
确保路径标识的节点当前可查看。 |
protected String |
paramString()
返回此 JTree 的字符串表示形式。 |
protected boolean |
removeDescendantSelectedPaths(TreePath path,
boolean includePath)
移除选择中的任何路径( path 的子路径)。 |
protected void |
removeDescendantToggledPaths(Enumeration<TreePath> toRemove)
移除已展开的 toRemove 中 TreePath 的所有子路径。 |
void |
removeSelectionInterval(int index0,
int index1)
从该选择中移除 index0 和 index1(包含)之间的节点。 |
void |
removeSelectionPath(TreePath path)
从当前选择中移除指定路径标识的节点。 |
void |
removeSelectionPaths(TreePath[] paths)
从当前选择移除指定路径标识的节点。 |
void |
removeSelectionRow(int row)
从当前选择移除索引 row 处的行。 |
void |
removeSelectionRows(int[] rows)
移除在每个指定行处选择的行。 |
void |
removeTreeExpansionListener(TreeExpansionListener tel)
移除 TreeExpansion 事件的侦听器。 |
void |
removeTreeSelectionListener(TreeSelectionListener tsl)
移除 TreeSelection 侦听器。 |
void |
removeTreeWillExpandListener(TreeWillExpandListener tel)
移除 TreeWillExpand 事件的侦听器。 |
void |
scrollPathToVisible(TreePath path)
确保路径中所有的路径组件均展开(最后一个路径组件除外)并滚动,以便显示该路径标识的节点。 |
void |
scrollRowToVisible(int row)
滚动行标识的条目,直到显示出来。 |
void |
setAnchorSelectionPath(TreePath newPath)
将标识的路径设置为定位路径。 |
void |
setCellEditor(TreeCellEditor cellEditor)
设置单元格编辑器。 |
void |
setCellRenderer(TreeCellRenderer x)
设置将用于绘制每个单元格的 TreeCellRenderer。 |
void |
setDragEnabled(boolean b)
打开或关闭自动拖动处理。 |
void |
setDropMode(DropMode dropMode)
设置此组件的放置模式。 |
void |
setEditable(boolean flag)
确定树是否可编辑。 |
protected void |
setExpandedState(TreePath path,
boolean state)
设置此 JTree 的展开状态。 |
void |
setExpandsSelectedPaths(boolean newValue)
配置 expandsSelectedPaths 属性。 |
void |
setInvokesStopCellEditing(boolean newValue)
通过选择树中的另一个节点、树的数据中的更改或通过其他方法来确定编辑被中断时发生了什么情况。 |
void |
setLargeModel(boolean newValue)
指定 UI 是否使用大模型。 |
void |
setLeadSelectionPath(TreePath newPath)
将标识的路径设置为前导路径。 |
void |
setModel(TreeModel newModel)
设置将提供数据的 TreeModel。 |
void |
setRootVisible(boolean rootVisible)
确定 TreeModel 的根节点是否可见。 |
void |
setRowHeight(int rowHeight)
设置每个单元格的高度(以像素为单位)。 |
void |
setScrollsOnExpand(boolean newValue)
设置 scrollsOnExpand 属性,它确定树是否可以滚动显示以前隐藏的子节点。 |
void |
setSelectionInterval(int index0,
int index1)
选择 index0 和 index1(包含)之间的节点。 |
void |
setSelectionModel(TreeSelectionModel selectionModel)
设置树的选择模型。 |
void |
setSelectionPath(TreePath path)
选择指定路径标识的节点。 |
void |
setSelectionPaths(TreePath[] paths)
选择由指定的路径数组标识的节点。 |
void |
setSelectionRow(int row)
选择显示的指定行的节点。 |
void |
setSelectionRows(int[] rows)
选择与显示的每个指定行对应的节点。 |
void |
setShowsRootHandles(boolean newValue)
设置 showsRootHandles 属性的值,它指定是否应显示节点句柄。 |
void |
setToggleClickCount(int clickCount)
设置节点展开或关闭之前鼠标的单击数。 |
void |
setUI(TreeUI ui)
设置呈现此组件的 L&F 对象。 |
void |
setVisibleRowCount(int newCount)
设置要显示的行数。 |
void |
startEditingAtPath(TreePath path)
选择指定路径标识的节点,并开始编辑。 |
boolean |
stopEditing()
结束当前编辑会话。 |
void |
treeDidChange()
当树被更改得足以需要调整边界大小,但还不足以需要移除展开的节点集(例如,展开或折叠节点,或者将节点插入到树)时发送。 |
void |
updateUI()
UIManager 发出的关于 L&F 已经更改的通知。 |
| 从类 java.lang.Object 继承的方法 |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| 字段详细信息 |
|---|
protected transient TreeModel treeModel
protected transient TreeSelectionModel selectionModel
protected boolean rootVisible
protected transient TreeCellRenderer cellRenderer
null,则 UI 使用默认 cellRenderer。
protected int rowHeight
protected boolean showsRootHandles
句柄是一个小图标,它显示在节点旁边,用户可以单击一次此图标来展开或折叠该节点。公共接口为可以展开的节点显示加号 (+),为可以折叠的节点显示减号 (-)。节点的句柄始终显示在最高层下面。
如果 rootVisible 设置指定将显示根节点,那么该根节点是位于最高层的惟一节点。如果不显示根节点,那么其所有的子节点都位于树的最高层。始终显示节点的句柄,但最高层节点除外。
如果根节点不可见,那么通常最好的方法是将此值设为 true。否则,树看起来很像一个列表,用户可能不知道“列表条目”实际上就是树节点。
rootVisibleprotected transient