请大家帮忙啊!!!

解决方案 »

  1.   

    现在控件出来了,可是点了没用,我很郁闷,真的。
    代码如下:package treedemo;import java.awt.BorderLayout;
    import java.awt.Dimension;import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JTree;
    import java.awt.*;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;public class TreeDemoFrame extends JFrame {
        JPanel cntpnTreeDemo;
        JTree trTreeDemo = new JTree();
        JLabel lblParentNodeName = new JLabel();
        JLabel lbNodeName = new JLabel();
        JLabel lblNodeType = new JLabel();
        JLabel lblChildNodeCount = new JLabel();
        JTextField txtParentNodeName = new JTextField();
        JTextField txtNodeName = new JTextField();
        JTextField txtNodeType = new JTextField();
        JTextField txtChildNodeCount = new JTextField();    public TreeDemoFrame() {
            try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    /**
         * Component initialization.
         *
         * @throws java.lang.Exception
         */
        private void jbInit() throws Exception {
            cntpnTreeDemo = (JPanel) getContentPane();
            cntpnTreeDemo.setLayout(null);
            setSize(new Dimension(650, 500));
            cntpnTreeDemo.setMaximumSize(new Dimension(600, 400));
            cntpnTreeDemo.setPreferredSize(new Dimension(600, 400));
            setTitle("欢迎使用 JTree");        /* 创建自定义 JTree */
            /* 创建根节点 */
            DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");
            /* 创建第一个枝节点 */
            DefaultMutableTreeNode books = new DefaultMutableTreeNode("书籍");
            lblChildNodeCount.setBounds(new Rectangle(320, 341, 78, 31));
            lblNodeType.setBounds(new Rectangle(320, 250, 76, 32));
            lblParentNodeName.setBounds(new Rectangle(317, 86, 93, 19));
            lbNodeName.setBounds(new Rectangle(316, 171, 80, 25));
            trTreeDemo.addTreeSelectionListener(new
                    TreeDemoFrame_trTreeDemo_treeSelectionAdapter(this));
            root.add(books);
            /* 创建第一个枝节点中的第一个枝节点 */
            DefaultMutableTreeNode java = new DefaultMutableTreeNode("Java");
            books.add(java);
            /* 创建第一个枝节点中的第一个枝节点的第一个叶节点 */
            DefaultMutableTreeNode integrity = new DefaultMutableTreeNode("完整参考资料");
            java.add(integrity);
            /* 创建第一个枝节点中的第一个枝节点的第二个叶节点 */
            DefaultMutableTreeNode useJava = new DefaultMutableTreeNode("Java 编程");
            java.add(useJava);
            /* 创建第一个枝节点中的第一个枝节点的第三个叶节点 */
            DefaultMutableTreeNode useAdvancedJava = new DefaultMutableTreeNode("高级 Java 编程");
            java.add(useAdvancedJava);
            /* 创建第一个枝节点中的第二个枝节点 */
            DefaultMutableTreeNode Database = new DefaultMutableTreeNode("Database");
            books.add(Database);
            /* 创建第一个枝节点中的第二个枝节点的第一个叶节点 */
            DefaultMutableTreeNode learnSQL = new DefaultMutableTreeNode("学习 SQL");
            Database.add(learnSQL);
            /* 创建第一个枝节点中的第二个枝节点的第二个叶节点 */
            DefaultMutableTreeNode learnOracle = new DefaultMutableTreeNode("学习 Oracle");
            Database.add(learnOracle);
            /* 创建第一个枝节点中的第二个枝节点的第三个叶节点 */
            DefaultMutableTreeNode learnDatabaseProgramming = new DefaultMutableTreeNode("学习数据库编程");
            Database.add(learnDatabaseProgramming);
            /* 创建第一个枝节点中的第三个枝节点 */
            DefaultMutableTreeNode jsp = new DefaultMutableTreeNode("JSP");
            books.add(jsp);
            /* 创建第一个枝节点中的第三个枝节点的第一个叶节点 */
            DefaultMutableTreeNode learnJSP = new DefaultMutableTreeNode("学习 JSP");
            jsp.add(learnJSP);
            /* 创建第一个枝节点中的第三个枝节点的第二个叶节点 */
            DefaultMutableTreeNode useJSPProgramming = new DefaultMutableTreeNode("使用 JSP 编程");
            jsp.add(useJSPProgramming);
            /* 创建第一个枝节点中的第四个枝节点 */
            DefaultMutableTreeNode CShape = new DefaultMutableTreeNode("C#");
            books.add(CShape);
            /* 创建第一个枝节点中的第四个枝节点的第一个叶节点 */
            DefaultMutableTreeNode useCShapeProgramming = new DefaultMutableTreeNode("使用 C# 编程");
            CShape.add(useCShapeProgramming);        /* 创建第二个枝节点 */
            DefaultMutableTreeNode software = new DefaultMutableTreeNode("软件");
            root.add(software);
            /* 创建第二个枝节点中的第一个枝节点 */
            DefaultMutableTreeNode OS = new DefaultMutableTreeNode("操作系统");
            software.add(OS);
            /* 创建第二个枝节点中的第一个枝节点的第一个叶节点 */
            DefaultMutableTreeNode MSDOS = new DefaultMutableTreeNode("MS-DOS");
            OS.add(MSDOS);
            /* 创建第二个枝节点中的第一个枝节点的第二个叶节点 */
            DefaultMutableTreeNode WIN2000SERVER = new DefaultMutableTreeNode("Windows 2000 Server");
            OS.add(WIN2000SERVER);
            /* 创建第二个枝节点中的第一个枝节点的第三个叶节点 */
            DefaultMutableTreeNode WIN2000PRO = new DefaultMutableTreeNode("Windows 2000 Professional");
            OS.add(WIN2000PRO);
            /* 创建第二个枝节点中的第二个枝节点 */
            DefaultMutableTreeNode DataBase = new DefaultMutableTreeNode("数据库");
            software.add(DataBase);
            /* 创建第二个枝节点中的第二个枝节点的第一个叶节点 */
            DefaultMutableTreeNode MSAccess = new DefaultMutableTreeNode("MSAccess");
            DataBase.add(MSAccess);
            /* 创建第二个枝节点中的第二个枝节点的第二个叶节点 */
            DefaultMutableTreeNode MSSQLServer = new DefaultMutableTreeNode("MSSQLServer");
            DataBase.add(MSSQLServer);        /* 在 JTree 里添加 根节点 */
            trTreeDemo = new JTree(root);
            trTreeDemo.setBounds(new Rectangle(11, 20, 278, 430));        /* 显示节点信息 */
            lblParentNodeName.setText("父节点名称:");
            lbNodeName.setText("节点名称:");
            lblNodeType.setText("节点类型:");
            lblChildNodeCount.setText("子节点数:");
            txtParentNodeName.setText("");
            txtParentNodeName.setBounds(new Rectangle(425, 67, 204, 40));
            txtNodeName.setText("");
            txtNodeName.setBounds(new Rectangle(424, 159, 207, 41));
            txtNodeType.setText("");
            txtNodeType.setBounds(new Rectangle(425, 247, 211, 43));
            txtChildNodeCount.setText("");
            txtChildNodeCount.setBounds(new Rectangle(425, 335, 211, 42));
            cntpnTreeDemo.add(txtParentNodeName);
            cntpnTreeDemo.add(lblParentNodeName);
            cntpnTreeDemo.add(lblChildNodeCount);
            cntpnTreeDemo.add(lblNodeType);
            cntpnTreeDemo.add(txtChildNodeCount);
            cntpnTreeDemo.add(lbNodeName);
            cntpnTreeDemo.add(txtNodeName);
            cntpnTreeDemo.add(txtNodeType);
            cntpnTreeDemo.add(trTreeDemo);
        }    public void trTreeDemo_valueChanged(TreeSelectionEvent e) {
             try {
                    DefaultMutableTreeNode node = (DefaultMutableTreeNode)
                                       trTreeDemo.getLastSelectedPathComponent();  // 获得当前点击的节点
                    String nodeName = node.getUserObject().toString();  // 节点名称                if (node.isRoot()) {  // 如果是根节点
                        txtParentNodeName.setText("");  // 父节点名称
                        txtNodeName.setText(nodeName);  // 节点名称
                        txtNodeType.setText("根节点");   // 节点类型
                        txtChildNodeCount.setText(Integer.toString(node.getChildCount()));  // 子节点数
                    } else {              // 如果不是根节点
                        txtParentNodeName.setText(node.getParent().toString());  // 父节点名称
                        txtNodeName.setText(nodeName);  // 节点名称                    if (node.isLeaf()) { // 如果是叶节点
                            txtNodeType.setText("叶节点");  // 节点类型
                        } else {             // 如果是枝节点
                            txtNodeType.setText("枝节点");  // 节点类型
                        }                    txtChildNodeCount.setText(Integer.toString(node.getChildCount()));  // 子节点数
                    }
            } catch (Exception ex) {
                    ex.printStackTrace();
            }
        }
    }
    class TreeDemoFrame_trTreeDemo_treeSelectionAdapter implements
            TreeSelectionListener {
        private TreeDemoFrame adaptee;
        TreeDemoFrame_trTreeDemo_treeSelectionAdapter(TreeDemoFrame adaptee) {
            this.adaptee = adaptee;
        }    public void valueChanged(TreeSelectionEvent e) {
            adaptee.trTreeDemo_valueChanged(e);
        }
    }
      

  2.   

    trTreeDemo在后面又被初始化了(trTreeDemo = new JTree(root);),TreeSelectionListener 根本没add上去。
      

  3.   


    import java.awt.Dimension;
    import java.awt.Rectangle;import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    import javax.swing.JTree;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.TreeSelectionModel;/* @(#)TreeDemoFrame.java 2011-1-21下午04:36:29
     *
     * Copyright 2003-2010 TONECON Hearing Equipment co,ltd.All right reserved.
     *//**
     * 
     * @author 龚全超
     * @create-time 2011-1-21下午04:36:29
     * @revision 3.0
     */public class TreeDemoFrame extends JFrame
    {
    JPanel cntpnTreeDemo;
    JTree trTreeDemo;
    JLabel lblParentNodeName = new JLabel();
    JLabel lbNodeName = new JLabel();
    JLabel lblNodeType = new JLabel();
    JLabel lblChildNodeCount = new JLabel();
    JTextField txtParentNodeName = new JTextField();
    JTextField txtNodeName = new JTextField();
    JTextField txtNodeType = new JTextField();
    JTextField txtChildNodeCount = new JTextField(); public TreeDemoFrame()
    {
    try
    {
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    jbInit();
    }
    catch (Exception exception)
    {
    exception.printStackTrace();
    }
    } /**
     * Component initialization.
     * 
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception
    {
    cntpnTreeDemo = (JPanel) getContentPane();
    cntpnTreeDemo.setLayout(null);
    setSize(new Dimension(650, 500));
    cntpnTreeDemo.setMaximumSize(new Dimension(600, 400));
    cntpnTreeDemo.setPreferredSize(new Dimension(600, 400));
    setTitle("欢迎使用 JTree"); /* 创建自定义 JTree */
    /* 创建根节点 */
    DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");
    /* 创建第一个枝节点 */
    DefaultMutableTreeNode books = new DefaultMutableTreeNode("书籍");
    lblChildNodeCount.setBounds(new Rectangle(320, 341, 78, 31));
    lblNodeType.setBounds(new Rectangle(320, 250, 76, 32));
    lblParentNodeName.setBounds(new Rectangle(317, 86, 93, 19));
    lbNodeName.setBounds(new Rectangle(316, 171, 80, 25)); root.add(books);
    /* 创建第一个枝节点中的第一个枝节点 */
    DefaultMutableTreeNode java = new DefaultMutableTreeNode("Java");
    books.add(java);
    /* 创建第一个枝节点中的第一个枝节点的第一个叶节点 */
    DefaultMutableTreeNode integrity = new DefaultMutableTreeNode("完整参考资料");
    java.add(integrity);
    /* 创建第一个枝节点中的第一个枝节点的第二个叶节点 */
    DefaultMutableTreeNode useJava = new DefaultMutableTreeNode("Java 编程");
    java.add(useJava);
    /* 创建第一个枝节点中的第一个枝节点的第三个叶节点 */
    DefaultMutableTreeNode useAdvancedJava = new DefaultMutableTreeNode(
    "高级 Java 编程");
    java.add(useAdvancedJava);
    /* 创建第一个枝节点中的第二个枝节点 */
    DefaultMutableTreeNode Database = new DefaultMutableTreeNode("Database");
    books.add(Database);
    /* 创建第一个枝节点中的第二个枝节点的第一个叶节点 */
    DefaultMutableTreeNode learnSQL = new DefaultMutableTreeNode("学习 SQL");
    Database.add(learnSQL);
    /* 创建第一个枝节点中的第二个枝节点的第二个叶节点 */
    DefaultMutableTreeNode learnOracle = new DefaultMutableTreeNode(
    "学习 Oracle");
    Database.add(learnOracle);
    /* 创建第一个枝节点中的第二个枝节点的第三个叶节点 */
    DefaultMutableTreeNode learnDatabaseProgramming = new DefaultMutableTreeNode(
    "学习数据库编程");
    Database.add(learnDatabaseProgramming);
    /* 创建第一个枝节点中的第三个枝节点 */
    DefaultMutableTreeNode jsp = new DefaultMutableTreeNode("JSP");
    books.add(jsp);
    /* 创建第一个枝节点中的第三个枝节点的第一个叶节点 */
    DefaultMutableTreeNode learnJSP = new DefaultMutableTreeNode("学习 JSP");
    jsp.add(learnJSP);
    /* 创建第一个枝节点中的第三个枝节点的第二个叶节点 */
    DefaultMutableTreeNode useJSPProgramming = new DefaultMutableTreeNode(
    "使用 JSP 编程");
    jsp.add(useJSPProgramming);
    /* 创建第一个枝节点中的第四个枝节点 */
    DefaultMutableTreeNode CShape = new DefaultMutableTreeNode("C#");
    books.add(CShape);
    /* 创建第一个枝节点中的第四个枝节点的第一个叶节点 */
    DefaultMutableTreeNode useCShapeProgramming = new DefaultMutableTreeNode(
    "使用 C# 编程");
    CShape.add(useCShapeProgramming); /* 创建第二个枝节点 */
    DefaultMutableTreeNode software = new DefaultMutableTreeNode("软件");
    root.add(software);
    /* 创建第二个枝节点中的第一个枝节点 */
    DefaultMutableTreeNode OS = new DefaultMutableTreeNode("操作系统");
    software.add(OS);
    /* 创建第二个枝节点中的第一个枝节点的第一个叶节点 */
    DefaultMutableTreeNode MSDOS = new DefaultMutableTreeNode("MS-DOS");
    OS.add(MSDOS);
    /* 创建第二个枝节点中的第一个枝节点的第二个叶节点 */
    DefaultMutableTreeNode WIN2000SERVER = new DefaultMutableTreeNode(
    "Windows 2000 Server");
    OS.add(WIN2000SERVER);
    /* 创建第二个枝节点中的第一个枝节点的第三个叶节点 */
    DefaultMutableTreeNode WIN2000PRO = new DefaultMutableTreeNode(
    "Windows 2000 Professional");
    OS.add(WIN2000PRO);
    /* 创建第二个枝节点中的第二个枝节点 */
    DefaultMutableTreeNode DataBase = new DefaultMutableTreeNode("数据库");
    software.add(DataBase);
    /* 创建第二个枝节点中的第二个枝节点的第一个叶节点 */
    DefaultMutableTreeNode MSAccess = new DefaultMutableTreeNode("MSAccess");
    DataBase.add(MSAccess);
    /* 创建第二个枝节点中的第二个枝节点的第二个叶节点 */
    DefaultMutableTreeNode MSSQLServer = new DefaultMutableTreeNode(
    "MSSQLServer");
    DataBase.add(MSSQLServer); /* 在 JTree 里添加 根节点 */
    trTreeDemo = new JTree(root);
    trTreeDemo.setBounds(new Rectangle(11, 20, 278, 430));
    trTreeDemo.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); 
    trTreeDemo
    .addTreeSelectionListener(new TreeDemoFrame_trTreeDemo_treeSelectionAdapter(
    this));
    /* 显示节点信息 */
    lblParentNodeName.setText("父节点名称:");
    lbNodeName.setText("节点名称:");
    lblNodeType.setText("节点类型:");
    lblChildNodeCount.setText("子节点数:");
    txtParentNodeName.setText("");
    txtParentNodeName.setBounds(new Rectangle(425, 67, 204, 40));
    txtNodeName.setText("");
    txtNodeName.setBounds(new Rectangle(424, 159, 207, 41));
    txtNodeType.setText("");
    txtNodeType.setBounds(new Rectangle(425, 247, 211, 43));
    txtChildNodeCount.setText("");
    txtChildNodeCount.setBounds(new Rectangle(425, 335, 211, 42));
    cntpnTreeDemo.add(txtParentNodeName);
    cntpnTreeDemo.add(lblParentNodeName);
    cntpnTreeDemo.add(lblChildNodeCount);
    cntpnTreeDemo.add(lblNodeType);
    cntpnTreeDemo.add(txtChildNodeCount);
    cntpnTreeDemo.add(lbNodeName);
    cntpnTreeDemo.add(txtNodeName);
    cntpnTreeDemo.add(txtNodeType);
    cntpnTreeDemo.add(trTreeDemo);
    } public void trTreeDemo_valueChanged(TreeSelectionEvent e)
    {
    try
    {
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) trTreeDemo
    .getLastSelectedPathComponent(); // 获得当前点击的节点
    String nodeName = node.getUserObject().toString(); // 节点名称
    if (node.isRoot())
    { // 如果是根节点
    txtParentNodeName.setText(""); // 父节点名称
    txtNodeName.setText(nodeName); // 节点名称
    txtNodeType.setText("根节点"); // 节点类型
    txtChildNodeCount.setText(Integer
    .toString(node.getChildCount())); // 子节点数
    }
    else
    { // 如果不是根节点
    txtParentNodeName.setText(node.getParent().toString()); // 父节点名称
    txtNodeName.setText(nodeName); // 节点名称 if (node.isLeaf())
    { // 如果是叶节点
    txtNodeType.setText("叶节点"); // 节点类型
    }
    else
    { // 如果是枝节点
    txtNodeType.setText("枝节点"); // 节点类型
    } txtChildNodeCount.setText(Integer
    .toString(node.getChildCount())); // 子节点数
    }
    }
    catch (Exception ex)
    {
    ex.printStackTrace();
    }
    } class TreeDemoFrame_trTreeDemo_treeSelectionAdapter implements
    TreeSelectionListener
    {
    private TreeDemoFrame adaptee; TreeDemoFrame_trTreeDemo_treeSelectionAdapter(TreeDemoFrame adaptee)
    {
    this.adaptee = adaptee;
    } public void valueChanged(TreeSelectionEvent e)
    {
    adaptee.trTreeDemo_valueChanged(e);
    }
    } public static void main(String[] args)
    {
    TreeDemoFrame tdf = new TreeDemoFrame();
    tdf.setName("TreeDemoFrame");
    tdf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    tdf.setVisible(true);
    }}