1 import java.awt.*;
2 import javax.swing.*;
3 import javax.swing.tree.*;
4 import javax.swing.event.*;
5
6 //森林状的关系图
7
8 public class JTreeDemo extends JFrame{
9 JTextField jtfInfo; //文本域,用于显示点击的节点名称
10
11 public JTreeDemo(){
12 super("森林状的关系图"); //调用父类构造函数
13
14 DefaultMutableTreeNode root = new DefaultMutableTreeNode("设置"); //生成根节点
15 DefaultMutableTreeNode node1=new DefaultMutableTreeNode("常规"); //生成节点一
16 node1.add(new DefaultMutableTreeNode("默认路径")); //增加新节点到节点一上
17 node1.add(new DefaultMutableTreeNode("保存选项"));
18 root.add(node1); //增加节点一到根节点上
19 root.add(new DefaultMutableTreeNode("界面"));
20 root.add(new DefaultMutableTreeNode("提示声音"));
21 root.add(new DefaultMutableTreeNode("打印"));
22
23 JTree tree = new JTree(root); //得到JTree的实例
24 DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer)tree.getCellRenderer(); //得到JTree的Renderer
25 renderer.setLeafIcon(null); //设置叶子节点图标为空
26 renderer.setClosedIcon(null); //设置关闭节点的图标为空
27 renderer.setOpenIcon(null); //设置打开节点的图标为空
28
29 tree.addTreeSelectionListener(new TreeSelectionListener() { //选择节点的事件处理
30 public void valueChanged(TreeSelectionEvent evt) {
31 TreePath path = evt.getPath(); //得到选择路径
32 String info=path.getLastPathComponent().toString(); //得到选择的节点名称
33 jtfInfo.setText(info); //在文本域中显示名称
34 }
35 });
36
37
38 JScrollPane jsp=new JScrollPane(tree); //增加JTree到滚动窗格
39 jtfInfo=new JTextField(); //实例化文本域
40 jtfInfo.setEditable(false); //文本域不可编辑
41 getContentPane().add(jsp,BorderLayout.CENTER); //增加组件到容器上
42 getContentPane().add(jtfInfo,BorderLayout.SOUTH);
43
44
45 setSize(250,200); //设置窗口尺寸
46 setVisible(true); //设置窗口可视
47 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
48 }
49
50 public static void main(String[] args){
51 new JTreeDemo();
52 }
53 }
![]()