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 }