Java Swing组件:树

       树是一种使用非常广泛的数据结构,计算机中的目录和文件就是以树结构形式来管理的。在Swing中,使用JTree来创建树结构,其主要构造方法如下:

  • JTree():使用默认数据模型创建一棵树。
  • JTree(Object[] value):使用指定数组中的每个元素元素作为子节点,创建一棵不显示根节点的树。
  • JTree(TreeModel newModel):使用指定的数据模型创建一棵显示根节点的树。
  • JTree(TreeNode root):创建一棵带有指定根节点的树。

       与表格类似,树的设计也采用了MVC模式,其中,JTree对象并没有包含实际的数据,它只是提供了数据的一个视图,对应的数据存储在树的数据模型中。在Swing中,树的数据模型采用TreeModel接口实现类的对象来管理。在实际应用中,一般使用DefaultTreeModel对象来管理树的数据模型。DefaultTreeModel类是TreeModel接口的一个实现类,它提供了TreeModel接口的默认实现。

       DefaultTreeModel类的构造方法如下:

  • DefaultTreeModel(TreeNode root):创建一个指定根节点的数据模型。
  • DefaultTreeModel(TreeNode root, boolean asksAllowsChildren):创建一个指定根节点的数据模型,如果asksAllowsChildren的取值为true,则节点的isLeaf()方法将被忽略,所有节点都被认为可以有子节点,如果其取值为false,则节点的isLeaf()方法将决定节点是否也可以有子节点。

       树中的每一行包含一个数据项,称为树的节点(node),每棵树只有一个根节点(root node),其它所有节点都是根节点的子孙节点。一个节点可以拥有子节点也可以不拥有子节点,我们称那些可有拥有子节点(不管当前是否有子节点)的节点称为分支节点(branch node),而不能拥有子节点的节点称为叶子节点(leaf node)。在Swing中,树的节点采用TreeNode接口实现类的对象来管理。在实际应用中,一般使用DefaultMutableTreeNode类的对象来创建树的节点,该类是TreeNode接口的子接口MutableTreeNode的实现类。

       DefaultMutableTreeNode类的构造方法如下:

  • DefaultMutableTreeNode():创建一个没有父节点和子节点,但允许有子节点的树节点。
  • DefaultMutableTreeNode(Object userObject):创建一个没有父节点和子节点,但允许有子节点的树节点,并使用指定的用户对象对其进行初始化。
  • DefaultMutableTreeNode(Object userObject,boolean allowsChildren): 创建一个没有父节点和子节点的树节点,使用指定的用户对象对其进行初始化,可以设置是否允许有子节点。

下面的代码演示了树的创建一般过程,其所创建的树结构如图1所示。

//创建树的根节点
DefaultMutableTreeNode root=new DefaultMutableTreeNode("专业");
//创建树的节点
DefaultMutableTreeNode node1=new DefaultMutableTreeNode("理学");
DefaultMutableTreeNode node2=new DefaultMutableTreeNode("工学");
DefaultMutableTreeNode node3=new DefaultMutableTreeNode("管理学");
DefaultMutableTreeNode node21=new DefaultMutableTreeNode("电子信息类");
DefaultMutableTreeNode node22=new DefaultMutableTreeNode("计算机类");
//将node21和node22作为子节点添加到node2中
node2.add(node21);node2.add(node22);
//将node1、node2和node3作为子节点添加到根节点中
root.add(node1);root.add(node2);root.add(node3);
//创建树的数据模型
DefaultTreeModel treeModel=new DefaultTreeModel(root);
//创建树
JTree tree=new JTree(treeModel);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值