Swing树组件
一、简单的树
树状结构是一种常用的信息表现形式,它可以直观的显示出一组信息的层次结构。Swing中的JTree类是用来创建树的,该类的常用构造方法如下:
JTree():创建一个默认的树
JTree(TreeNode node):根据指定根节点创建树。
JTree(TreeModel newModel):根据指定树模型创建树.
DefaultMutableTreeNode类实现了TreeNode接口,用来创建树的节点,DefaultMutableTreeNode类的add()方法为节点添加子节点。
DefaultTreeModel类实现了TreeModel接口,该类提供了两个构造方法,所以在利用该类创建树模型时,必须指定树的根节点。构造方法如下:
DefaultTreeModel(TreeNode root):创建一个采用默认方式来判断节点是否为叶子节点的树模型。
DefaultTreeModel(TreeNode root,boolean askAllowsChildren):创建一个采用指定方式来判断节点是否为叶子节点的树模型。
二、处理选中节点事件
树的节点允许被选中和选中状态,通过捕获树节点的选择事件,可以处理相应的操作树的选择模式有三种,通过TreeSelectionModel类的对象可以设置树的选择模式。可以通过JTree类的getSelctionModel()方法获得TreeSelectionModel类的对象,然后通过TreeSelctionModel类的setSelectionModel(int mode)方法设置选择模式,该方法的入口参数为:
SINGLE_TREE_SELECTION:只允许选中一个
CONTIGUOUS_TREE_SELECTION:允许连续选择多个
DISCONTIGUOUS_TREE_SELECTION:允许随意选中多个
当选中树节点和取消树节点的选中状态时,将发出TreeSelectionEvent事件,通过实现TreeSelectionListener接口可以捕获该事件。TreeSelectionListener接口的具体定义:
Public interface TreeSelectionListener extends EventListener{
Void valueChanged(TreeSelectionEvent e);
}
当捕获发出的TreeSelectionEvent事件时,Void valueChanged(TreeSelectionEvent e)方法将被触发执行,此时可通过JTree类的getSelectionPaths()方法获得所有 被选中节点的路径,该方法将返回一个TreePath类型的数组;通过getSelectionPath()方法可以获取选中节点中的索引的最小的节点的路径,即TreePath对象,在此之前,可以通过JTree类的isSelectionEmpty()方法查看是否存在被选中的节点,可以通过getSelectionCount()方法可以获取被选中节点的数量。
TreePath类的常用方法:
getPath():以Object数组的形式返回该路径中所有节点的对象,在数组中的顺序按照从根节点到子节点的顺序。
getLastPathComponent():获得该路径中最后一个节点的对象。
getParentPath():获得路径中除了最后一个节点的路径
pathByAddingChild():获得向路径中添加指定节点后的路径
getPathCount():获得向路径中包含节点的数量
getPathComponent(int element):获得路径中指定索引位置的节点对象
三、遍历树节点
DefaultMutableTreeNode类提供了两组相对的遍历方式,如下:
前序遍历和后序遍历是一组相对的遍历方式,方法分别为:preorderEnumeration()和postorderEnumeration()方法,返回的是枚举类型对象。
广度优先遍历和深度优先遍历是一组相对的遍历方式,方法分别为:breadFirstEnumeration()和deptFirstEnumeration()方法,返回的是枚举类型对象。