- 普通节点:包含子节点的节点,具有唯一父节点的节点
- 叶子结点:没有子节点的节点,因此叶子结点不可作为父节点
- 根节点:没有父节点的节点,根节点不可作为子节点
创建树
当一个节点具有子节点的两种状态
- 展开状态:当父节点处于展开状态时,其子节点是可见的
- 折叠状态:当父节点处于折叠状态时,其子节点都是不可见的
JTree常用构造器
- JTree(TreeModel newModel):使用指定的数据模型创建JTree对象,它默认显示根节点
- JTree(TreeNode root):使用root作为根节点创建JTree对象,它默认显示根节点
- JTree(TreeNode root, boolean asksAllowsChildren):使用root作为根节点创建JTree对象,它默认显示根节点。asksAllowsChildren参数控制怎样的节点才算叶子节点,如果改参数为true,则只有当前应用使用setAllowsChildren(false)显示设置某个节点不允许添加子节点时(以后也不会拥有子节点),该节点才会被JTree当成叶子节点
package com.my;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
public class SimpleJTree{
JFrame jf=new JFrame("简单树");
JTree tree;
DefaultMutableTreeNode root;
DefaultMutableTreeNode guangdong;
DefaultMutableTreeNode guangxi;
DefaultMutableTreeNode foshan;
DefaultMutableTreeNode shantou;
DefaultMutableTreeNode guilin;
DefaultMutableTreeNode nanning;
public void init(){
//依次创建树的所有节点
root=new DefaultMutableTreeNode("世界");
guangdong=new DefaultMutableTreeNode("中国");
guangxi=new DefaultMutableTreeNode("美国");
foshan=new DefaultMutableTreeNode("北京");
shantou=new DefaultMutableTreeNode("上海");
guilin=new DefaultMutableTreeNode("华盛顿");
nanning=new DefaultMutableTreeNode("纽约");
//通过add()方法建立树节点之间的父子关系
guangdong.add(foshan);
guangdong.add(shantou);
guangxi.add(guilin);
guangxi.add(nanning);
root.add(guangdong);
root.add(guangxi);
tree=new JTree(root);
jf.add(new JScrollPane(tree));
jf.pack();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
public static void main(String[] args) {
new SimpleJTree().init();
}
}
运行结果