树组件继承JComponent类,所以他不能独立线是,必须要依赖
顶层容器才能显示处理
JTree构造器 说明
JTree() 建立一颗系统默认的树
JTree(Hashtable value) 利用Hashtable建立树,不显示root node节点
JTree(Object[] value) 利用Object Array建立树,不显示root node节点
JTree(TreeModel newModel) 利用TreeModel建立树
JTree(TreeNode root) 利用TreeModel建立树
JTree(TreeNode root,boolean asksAllowsChilren)
JTree(Vector value) 利用Vector建立树,不显示root node
----------------------------------------------------------------------------------------------
1.利用Hashtable建立树组件
String[] s1={"青菜","白菜","大葱"};
String[] s2={"苹果","橙子","橘子"};
String[] s3={"馒头","包子","饺子"};
Hashtable h1=new Hashtable();//建立两个Hashtable
hashtable h2=new Hashtable();
h1.put("蔬菜",s1);
h2.put("水果",s2);
h3.put("h1",h1);
h3.put("h2",h2);
JTree jt=new JTree(h3);
-----------------------------------------------------------------------------------------------------
如何创建数据模型
JTree上的每一个节点就代表一个TreeNode对象,TreeNode本身就是一个接口,里面定义
了7个有关节点的方法,其中包括判断是否为叶节点,有几个子节点(getChildCount())父节点
是什么(getparent())等,在实际开发中,一般不会直接实现此接口,而是采用java所提供的
DefaultMutableTreeNode类,此类用于实现MutableTreeNode接口,此类主要是定义
一些节点的处理方式,如添加节点(insert())删除节点(remove)设置节点(setUserObject)等
---------------------------------------------------------------------------------------------------
列举出的DefaultMutableTreeNode的构造器
DefaultMutableTreeNode的构造器 说明
DefultMutableTreeNode() 建立空的DefaultMutableTreeNode对象
DefaultMutableTreeNode(Object userObjecy) 建立DefaultMutableTreeNode对象,节点为userObject
DefaultMutableTreeNode(Object userObject,boolean allowsChildren)
建立DefaultMutableTreeNode对象 并决定此节点是否允许具有子节点
-------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
如何处理节点事件
JTree中两个常用的事件与处理方法,分别是
TreeModelEvent与TreeSelectionEvent.当树的结构改变时,例如
节点值改变了,新增节点,删除节点等,都会触发TreeModelEvent事件,当
选择任何一个节点时,都会触发TreeSelectionEvent事件
----------------------------------------------------------------------------------------------
1.如何处理TreeModelEvent事件
要处理TreeModelEvent事件,就必须实现TreeModelListener接口,此接口定义了
4个方法
----------------------------------------------------------------------------------------------
TreeModelListener接口方法
方法 说明
void treeNodesChanged(TreeModelEvent e) 当节点改变时系统就会调用这个方法
void treeNodesInserted(TreeModelEvent e) 当新增节点时系统就会调用这个方法
void treeNodesRemoved(TreeModelEvent e) 当删除节点时系统就会调用这个方法
void treeStructureChanged(TreeModelEvent e) 当树结构改变时系统就会调用这个方法
由于要实现TreeModelListener接口,所以就必须要实现上面4个接口,其实
TreeModelEvent类本身提供了5个方法,用来获取树组件信息
TreeModelEvent方法
------------------------------------------------------------------------------------------------
方法 说明
int[] getChildIndices() 返回子节点群的索引值
Object[] getChildren() 返回子节点群
Object[] getPath() 返回Tree中一条path上(从root node到leaf node)的节点
TreePathgetTreePath() 取得目前位置的Tree Path
StringToString() 取得字符串表示法
由于TreeModelEvent的getTreePath()方法可以得到TreePath对象,此对象能够让系统知道
用户目前正在选择哪一个节点,TreePath类最常用的方法如下:
public Object getLastPathComponent():取得最深(内)曾的节点
public int getPathCount():取得此path上共有几个节点
------------------------------------------------------------------------------------------------