Module java.desktop
Package javax.swing.tree

Interface TreeModel

所有已知的实现类:
DefaultTreeModel

public interface TreeModel
JTree使用的模型。

JTree及其相关类广泛使用TreePath来标识TreeModel中的节点。如果一个TreeModel在同一父级下的两个不同索引处返回相同的对象(通过equals比较),则生成的TreePath对象也将被视为相等。一些实现可能会假设如果两个TreePath相等,则它们标识相同的节点。如果不满足此条件,可能会导致绘制问题和其他奇怪的现象。换句话说,如果对于给定父级的getChild返回相同的对象(根据equals确定),可能会出现问题,建议避免这样做。

类似地,JTree及其相关类将TreePath放入Map中。因此,如果一个节点被请求两次,则返回值必须相等(使用equals方法)并且具有相同的hashCode

有关树模型的更多信息,包括自定义实现示例,请参阅The Java Tutorial中的How to Use Trees

参见:
  • Method Details

    • getRoot

      Object getRoot()
      返回树的根。仅当树没有节点时返回null
      返回:
      树的根
    • getChild

      Object getChild(Object parent, int index)
      返回父级的子项在父级子数组中的索引index。必须是先前从此数据源获取的节点。如果indexparent的有效索引(即index >= 0 && index < getChildCount(parent)),则不应返回null
      参数:
      parent - 树中的一个节点,从此数据源获取
      index - 要返回的子项的索引
      返回:
      parent在索引index处的子项
    • getChildCount

      int getChildCount(Object parent)
      返回parent的子项数。如果节点是叶子节点或没有子项,则返回0。必须是先前从此数据源获取的节点。
      参数:
      parent - 树中的一个节点,从此数据源获取
      返回:
      节点parent的子项数
    • isLeaf

      boolean isLeaf(Object node)
      如果node是叶子节点,则返回true。即使node没有子项,此方法也可能返回false。例如,文件系统中的目录可能不包含文件;表示目录的节点不是叶子节点,但它也没有子项。
      参数:
      node - 树中的一个节点,从此数据源获取
      返回:
      如果node是叶子节点,则返回true
    • valueForPathChanged

      void valueForPathChanged(TreePath path, Object newValue)
      当用户更改path标识的项目的值为newValue时调用。如果newValue表示真正的新值,则模型应发布一个treeNodesChanged事件。
      参数:
      path - 用户已更改的节点的路径
      newValue - 来自TreeCellEditor的新值
    • getIndexOfChild

      int getIndexOfChild(Object parent, Object child)
      返回父级中子项的索引。如果parentchildnull,则返回-1。如果parentchild不属于此树模型,则返回-1。
      参数:
      parent - 树中的一个节点,从此数据源获取
      child - 我们感兴趣的节点
      返回:
      父级中子项的索引,如果childparentnull或不属于此树模型,则返回-1
    • addTreeModelListener

      void addTreeModelListener(TreeModelListener l)
      添加在树更改后发布的TreeModelEvent的侦听器。
      参数:
      l - 要添加的侦听器
      参见:
    • removeTreeModelListener

      void removeTreeModelListener(TreeModelListener l)
      删除先前使用addTreeModelListener添加的侦听器。
      参数:
      l - 要移除的侦听器
      参见: