java的jtree点击节点,如何将子节点全部输出来,例如:
|---information
  |--0:informate
    |--name
    |--time
    |-canread
像上面那样,假如点击information节点,控制台就会输出0:informate,假如点击0:information,控制台就会输出name,time,canread

解决方案 »

  1.   

    直接给你个实际例子,运行看到效果后你就知道怎么实现了,如果还不晓得再问我!GoodLuck!
    public class JTreeSecond extends JFrame {
    private static final long serialVersionUID = 1L;
    JPanel contentPane;
        JScrollPane jScrollPane1 = new JScrollPane();
        JTree jTree1 = null;
        JButton jbtDelete = new JButton();
        JButton jbtExit = new JButton();
        JLabel jblParentName = new JLabel();
        JLabel jblNodeName = new JLabel();
        JLabel jblNodeType = new JLabel();
        JLabel jblChildNumber = new JLabel();
        JTextField txtParentName = new JTextField();
        JTextField txtNodeName = new JTextField();
        JTextField txtNodeType = new JTextField();
        JTextField txtChildNumber = new JTextField();
        DefaultTreeModel treeModel = null;
        JButton jbtInsert = new JButton();
        JPopupMenu mnuDisplay = new JPopupMenu();
        JMenu mnuEditable = new JMenu();
        JMenuItem mnuLocked = new JMenuItem();
        JMenuItem mnuUnLocked = new JMenuItem();
        JMenuItem mnuExit = new JMenuItem();
        JMenuItem mnuDelete = new JMenuItem();
        static boolean packFrame = false;
        public JTreeSecond() {
            try {
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    /**
         * Component initialization.
         *
         * @throws java.lang.Exception
         */
        private void jbInit() throws Exception {
            contentPane = (JPanel) getContentPane();
            contentPane.setLayout(null);
            setSize(new Dimension(478, 435));
            setTitle("Frame Title");
            jScrollPane1.setBounds(new Rectangle(10, 9, 165, 318));
            jbtDelete.setBounds(new Rectangle(193, 362, 78, 34));
            jbtDelete.setText("删除");
            jbtDelete.addActionListener(new JTreeSecond_jbtDelete_actionAdapter(this));
            jbtExit.setBounds(new Rectangle(284, 362, 76, 33));
            jbtExit.setText("退出");
            jbtExit.addActionListener(new JTreeSecond_jbtExit_actionAdapter(this));
            jblParentName.setText("父节点名称");
            jblParentName.setBounds(new Rectangle(200, 22, 74, 33));
            jblNodeName.setText("节点名称");
            jblNodeName.setBounds(new Rectangle(200, 82, 73, 32));
            jblNodeType.setText("节点类型");
            jblNodeType.setBounds(new Rectangle(199, 146, 63, 35));
            jblChildNumber.setText("子节点数");
            jblChildNumber.setBounds(new Rectangle(199, 198, 66, 33));
            txtParentName.setBounds(new Rectangle(288, 22, 102, 32));
            txtNodeName.setBounds(new Rectangle(288, 82, 102, 35));
            txtNodeType.setBounds(new Rectangle(288, 146, 102, 40));
            txtChildNumber.setBounds(new Rectangle(288, 208, 102, 39));        jTree1 = new JTree(getTree());
            treeModel = (DefaultTreeModel) jTree1.getModel();        jTree1.setEditable(true);
            jTree1.addTreeSelectionListener(new JTreeSecond_jTree1_treeSelectionAdapter(this));
            jbtInsert.setBounds(new Rectangle(66, 362, 83, 33));
            jbtInsert.setText("增加");
            jbtInsert.addActionListener(new JTreeSecond_jbtInsert_actionAdapter(this));        jTree1.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent event) {
                    if (event.getModifiers() == Event.META_MASK) {
                        mnuDisplay.show(contentPane, event.getX(), event.getY());
                    }
                }
            });        contentPane.add(jScrollPane1);
            contentPane.add(jbtExit);
            contentPane.add(jblParentName);
            contentPane.add(jblNodeName);
            contentPane.add(jblNodeType);
            contentPane.add(jblChildNumber);
            contentPane.add(txtParentName);
            contentPane.add(txtNodeName);
            contentPane.add(txtNodeType);
            contentPane.add(txtChildNumber);
            contentPane.add(jbtDelete);
            contentPane.add(jbtInsert);
            contentPane.add(mnuDisplay);
            jScrollPane1.getViewport().add(jTree1);        mnuEditable.setText("编辑");
            mnuLocked.setText("锁定");
            mnuUnLocked.setText("解锁");
            mnuExit.setText("退出");
            mnuDelete.setText("删除");
            mnuDisplay.add(mnuEditable);
            mnuDisplay.add(mnuDelete);
            mnuDisplay.add(mnuExit);
            mnuEditable.add(mnuLocked);
            mnuEditable.add(mnuUnLocked);        mnuDelete.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    jbtDelete_actionPerformed(e);
                }
            });        mnuLocked.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    mnuLocked_actionPerformed(e);
                }
            });        mnuUnLocked.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    mnuUnLocked_actionPerformed(e);
                }
            });        mnuExit.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    jbtExit_actionPerformed(e);
                }
            });    }    public static void main(String[] args) {
            JTreeSecond frame = new JTreeSecond();
            if (packFrame) {
                frame.pack();
            } else {
                frame.validate();
            }        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
            Dimension frameSize = frame.getSize();
            if (frameSize.height > screenSize.height) {
                frameSize.height = screenSize.height;
            }
            if (frameSize.width > screenSize.width) {
                frameSize.width = screenSize.width;
            }
            frame.setLocation((screenSize.width - frameSize.width) / 2,
                              (screenSize.height - frameSize.height) / 2);
            frame.setVisible(true);    } 
    后续
      

  2.   

    续1private DefaultMutableTreeNode getTree() {
            DefaultMutableTreeNode root = new DefaultMutableTreeNode("朋友列表");
            DefaultMutableTreeNode friend = new DefaultMutableTreeNode("我的好友");
            DefaultMutableTreeNode schoolmate = new DefaultMutableTreeNode("同学");
            DefaultMutableTreeNode stranger = new DefaultMutableTreeNode("陌生人");
            DefaultMutableTreeNode blacklist = new DefaultMutableTreeNode("黑名单");
            DefaultMutableTreeNode friendZhan = new DefaultMutableTreeNode("好友张");
            DefaultMutableTreeNode friendWang = new DefaultMutableTreeNode("好友王");
            DefaultMutableTreeNode friendLi = new DefaultMutableTreeNode("好友李");
            DefaultMutableTreeNode friendZhao = new DefaultMutableTreeNode("好友赵");
            DefaultMutableTreeNode friendSun = new DefaultMutableTreeNode("好友孙");
            DefaultMutableTreeNode schoolmateZhan = new DefaultMutableTreeNode("同学张");
            DefaultMutableTreeNode schoolmateWang = new DefaultMutableTreeNode("同学王");
            DefaultMutableTreeNode schoolmateLi = new DefaultMutableTreeNode("同学李");
            DefaultMutableTreeNode schoolmateZhao = new DefaultMutableTreeNode("同学赵");
            DefaultMutableTreeNode schoolmateSun = new DefaultMutableTreeNode("同学孙");
            DefaultMutableTreeNode strangerZhan = new DefaultMutableTreeNode("陌生人张");
            DefaultMutableTreeNode strangerWang = new DefaultMutableTreeNode("陌生人王");
            DefaultMutableTreeNode strangerLi = new DefaultMutableTreeNode("陌生人李");
            DefaultMutableTreeNode strangerZhao = new DefaultMutableTreeNode("陌生人赵");
            DefaultMutableTreeNode strangerSun = new DefaultMutableTreeNode("陌生人孙");
            DefaultMutableTreeNode blacklistZhan = new DefaultMutableTreeNode("黑名单张");
            DefaultMutableTreeNode blacklistWang = new DefaultMutableTreeNode("黑名单王");
            DefaultMutableTreeNode blacklistLi = new DefaultMutableTreeNode("黑名单李");
            DefaultMutableTreeNode blacklistZhao = new DefaultMutableTreeNode("黑名单赵");
            DefaultMutableTreeNode blacklistSun = new DefaultMutableTreeNode("黑名单孙");        root.add(friend);
            root.add(schoolmate);
            root.add(stranger);
            root.add(blacklist);        friend.add(friendZhan);
            friend.add(friendWang);
            friend.add(friendLi);
            friend.add(friendZhao);
            friend.add(friendSun);        schoolmate.add(schoolmateZhan);
            schoolmate.add(schoolmateWang);
            schoolmate.add(schoolmateLi);
            schoolmate.add(schoolmateZhao);
            schoolmate.add(schoolmateSun);        stranger.add(strangerZhan);
            stranger.add(strangerWang);
            stranger.add(strangerLi);
            stranger.add(strangerZhao);
            stranger.add(strangerSun);        blacklist.add(blacklistZhan);
            blacklist.add(blacklistWang);
            blacklist.add(blacklistLi);
            blacklist.add(blacklistZhao);
            blacklist.add(blacklistSun);        return root;
        }    public void jTree1_valueChanged(TreeSelectionEvent e) {
            DefaultMutableTreeNode defaultNode = (DefaultMutableTreeNode) jTree1.getLastSelectedPathComponent();
            String name = "";
            if (defaultNode != null) {
                Object nodeInfo = defaultNode.getUserObject();
                if (defaultNode.isRoot()) {
                    txtParentName.setText("");
                    txtNodeType.setText(nodeInfo.toString());
                    txtNodeName.setText("Root");
                    txtChildNumber.setText(String.valueOf(defaultNode.getChildCount()));
                } else {
                    name = defaultNode.getParent().toString();
                    txtParentName.setText(name);
                    txtNodeType.setText(nodeInfo.toString());
                    if (defaultNode.isLeaf()) {
                        txtNodeName.setText("Leaf");
                    } else {
                        txtNodeName.setText("Parent");
                    }
                    txtChildNumber.setText(String.valueOf(defaultNode.getChildCount()));
                }
            }    }    public void jbtDelete_actionPerformed(ActionEvent e) {
            TreePath treePath = jTree1.getSelectionPath();
            if (treePath != null) {
                DefaultMutableTreeNode defaultTreeNode = (DefaultMutableTreeNode)
                        treePath.getLastPathComponent();
                TreeNode treeNode = (TreeNode) defaultTreeNode.getParent();
                if (treeNode != null) {
                    treeModel.removeNodeFromParent(defaultTreeNode);
                }
            } else {
                JOptionPane.showMessageDialog(this, "请选择节点");
            }    }    public void jbtInsert_actionPerformed(ActionEvent e) {
            DefaultMutableTreeNode parentNode = null;
            DefaultMutableTreeNode newNode = new DefaultMutableTreeNode("新节点");
            newNode.setAllowsChildren(true);
            TreePath parentPath = jTree1.getSelectionPath();        //判断是否选择节点
            if (parentPath != null) {
                //取得新节点的父节点
                parentNode = (DefaultMutableTreeNode) (parentPath.
                        getLastPathComponent());
                System.out.println(parentNode.toString());            //由DefaultTreeModel的insertNodeInto()方法增加新节点
                treeModel.insertNodeInto(newNode, parentNode,
                                         parentNode.getChildCount());            //tree的scrollPathToVisible()方法在使Tree会自动展开文件夹以便显示所加入的新节点。若没加这行则加入的新节点
                //会被 包在文件夹中,你必须自行展开文件夹才看得到。
                jTree1.scrollPathToVisible(new TreePath(newNode.getPath()));
            } else {
                JOptionPane.showMessageDialog(this, "请选择节点");
            }
        }    public void jbtExit_actionPerformed(ActionEvent e) {
            this.dispose();
        }    /**
         * 设置可以编辑状态
         * @param e ActionEvent
         */
        public void mnuUnLocked_actionPerformed(ActionEvent e) {
            jTree1.setEnabled(true);
        }    /**
         * 设置不可以编辑状态
         * @param e ActionEvent
         */
        public void mnuLocked_actionPerformed(ActionEvent e) {
            jTree1.setEnabled(false);
        }
    }
    class JTreeSecond_jbtExit_actionAdapter implements ActionListener {
        private JTreeSecond adaptee;
        JTreeSecond_jbtExit_actionAdapter(JTreeSecond adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.jbtExit_actionPerformed(e);
        }
    }
    class JTreeSecond_jbtInsert_actionAdapter implements ActionListener {
        private JTreeSecond adaptee;
        JTreeSecond_jbtInsert_actionAdapter(JTreeSecond adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.jbtInsert_actionPerformed(e);
        }
    }
    class JTreeSecond_jTree1_treeSelectionAdapter implements TreeSelectionListener {
        private JTreeSecond adaptee;
        JTreeSecond_jTree1_treeSelectionAdapter(JTreeSecond adaptee) {
            this.adaptee = adaptee;
        }    public void valueChanged(TreeSelectionEvent e) {
            adaptee.jTree1_valueChanged(e);
        }
    }
    class JTreeSecond_jbtDelete_actionAdapter implements ActionListener {
        private JTreeSecond adaptee;
        JTreeSecond_jbtDelete_actionAdapter(JTreeSecond adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.jbtDelete_actionPerformed(e);
        }
    }