javax.swing

接口
异常
java.lang.Object
  继承者 java.awt.Component
      继承者 java.awt.Container
          继承者 javax.swing.JComponent
              继承者 javax.swing.JTree
所有已实现的接口:
ImageObserver, MenuContainer, Serializable, Accessible, Scrollable

public class JTree
     
extends JComponent
implements Scrollable, Accessible

将分层数据集显示为轮廓的控件。有关面向任务的文档和使用树的示例,请参阅 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 类一样,可以使用 InputMapActionMapAction 对象与 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 的子路径的 TreePathEnumeration
 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)
          返回块增量的数量,它是基于 orientationvisibleRect 高度或宽度。
 boolean getScrollableTracksViewportHeight()
          返回 false 指示视口的高度不能确定表的高度,除非树的首选高度小于视口高度。
 boolean getScrollableTracksViewportWidth()
          返回 false 指示视口的宽度不能确定表的宽度,除非树的首选宽度小于视口宽度。
 int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
          返回滚动时增加的数量。
 boolean getScrollsOnExpand()
          返回 scrollsOnExpand 属性的值。
 int getSelectionCount()
          返回选择的节点数。
 TreeSelectionModel getSelectionModel()
          返回选择的模型。
 TreePath getSelectionPa

JDK 1.6 中文手册