各位请指点一下:我有一个树根节点root下有3层,如何获得每一层的所有节点名称,并把同一层的节点名称放到一个动态数组里有类似的程序参考也可谢谢

解决方案 »

  1.   

    package ok;import java.awt.Dimension;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import java.awt.Rectangle;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.JTree;
    import javax.swing.JButton;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;public class Frame2 extends JFrame {
        JPanel contentPane;
        DefaultMutableTreeNode gen=new DefaultMutableTreeNode("根");
        JTree jTree1 = new JTree(gen);
        JButton jButton1 = new JButton();
        public Frame2() {
            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(400, 300));
            setTitle("Frame Title");
            jTree1.setBounds(new Rectangle(84, 40, 222, 167));
            jButton1.setBounds(new Rectangle(137, 238, 129, 44));
            jButton1.setText("jButton1");
            jButton1.addActionListener(new Frame2_jButton1_actionAdapter(this));
            contentPane.add(jTree1);
            contentPane.add(jButton1);        DefaultMutableTreeNode zhi1=new DefaultMutableTreeNode("枝1");
            DefaultMutableTreeNode zhi2=new DefaultMutableTreeNode("枝2");
            DefaultMutableTreeNode zhi3=new DefaultMutableTreeNode("枝3");
            
            DefaultMutableTreeNode ye1=new DefaultMutableTreeNode("叶1");
            DefaultMutableTreeNode ye2=new DefaultMutableTreeNode("叶2");        DefaultMutableTreeNode ye3=new DefaultMutableTreeNode("叶3");
            
            zhi1.add(ye1);
            zhi1.add(ye2);
            zhi1.add(ye3);        DefaultMutableTreeNode ye4=new DefaultMutableTreeNode("叶4");
            DefaultMutableTreeNode ye5=new DefaultMutableTreeNode("叶5");
            DefaultMutableTreeNode ye6=new DefaultMutableTreeNode("叶6");
            
            zhi2.add(ye4);
            zhi2.add(ye5);
            zhi2.add(ye6);        gen.add(zhi1);
            gen.add(zhi2);
            gen.add(zhi3);
        }    public void jButton1_actionPerformed(ActionEvent e) {
            DefaultMutableTreeNode gen=(DefaultMutableTreeNode)jTree1.getModel().getRoot();
            ArrayList list=new ArrayList();
            
            for (int i=0;i<gen.getChildCount();i++)
            {
                String[] str=new String[gen.getChildCount()];
                
                for (int a=0;a<gen.getChildAt(i).getChildCount();a++)
                {
                    str[a]=gen.getChildAt(i).getChildAt(a).toString();
                }
                
                list.add(str);
            }
            
            for (int i=0;i<list.size();i++)
            {
                String[] str=(String[])list.get(i);
                System.out.println("第"+(i+1)+"层");
                for (String a:str)
                {
                    System.out.print(a+"\t");
                }
                System.out.println("");
            }
        }}
    class Frame2_jButton1_actionAdapter implements ActionListener {
        private Frame2 adaptee;
        Frame2_jButton1_actionAdapter(Frame2 adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.jButton1_actionPerformed(e);
        }
    }
      

  2.   

    刚才的程序有问题  不好意思!
    package ok;import java.awt.Dimension;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import java.awt.Rectangle;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.JTree;
    import javax.swing.JButton;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.ArrayList;public class Frame2 extends JFrame {
        JPanel contentPane;
        DefaultMutableTreeNode gen=new DefaultMutableTreeNode("根");
        JTree jTree1 = new JTree(gen);
        JButton jButton1 = new JButton();
        public Frame2() {
            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(400, 300));
            setTitle("Frame Title");
            jTree1.setBounds(new Rectangle(84, 40, 222, 167));
            jButton1.setBounds(new Rectangle(137, 238, 129, 44));
            jButton1.setText("jButton1");
            jButton1.addActionListener(new Frame2_jButton1_actionAdapter(this));
            contentPane.add(jTree1);
            contentPane.add(jButton1);        DefaultMutableTreeNode zhi1=new DefaultMutableTreeNode("枝1");
            DefaultMutableTreeNode zhi2=new DefaultMutableTreeNode("枝2");
            DefaultMutableTreeNode zhi3=new DefaultMutableTreeNode("枝3");
            
            DefaultMutableTreeNode ye1=new DefaultMutableTreeNode("叶1");
            DefaultMutableTreeNode ye2=new DefaultMutableTreeNode("叶2");        DefaultMutableTreeNode ye3=new DefaultMutableTreeNode("叶3");
            
            zhi1.add(ye1);
            zhi1.add(ye2);
            zhi1.add(ye3);        DefaultMutableTreeNode ye4=new DefaultMutableTreeNode("叶4");
            DefaultMutableTreeNode ye5=new DefaultMutableTreeNode("叶5");
            DefaultMutableTreeNode ye6=new DefaultMutableTreeNode("叶6");
            DefaultMutableTreeNode ye7=new DefaultMutableTreeNode("叶7");        zhi2.add(ye4);
            zhi2.add(ye5);
            zhi2.add(ye6);
            zhi2.add(ye7);        gen.add(zhi1);
            gen.add(zhi2);
            gen.add(zhi3);
        }    public void jButton1_actionPerformed(ActionEvent e) {
            DefaultMutableTreeNode gen=(DefaultMutableTreeNode)jTree1.getModel().getRoot();
            ArrayList list=new ArrayList();
            
            for (int i=0;i<gen.getChildCount();i++)
            {
                String[] str=new String[gen.getChildAt(i).getChildCount()];
                
                for (int a=0;a<gen.getChildAt(i).getChildCount();a++)
                {
                    str[a]=gen.getChildAt(i).getChildAt(a).toString();
                }
                
                list.add(str);
            }
            
            for (int i=0;i<list.size();i++)
            {
                String[] str=(String[])list.get(i);
                System.out.println("第"+(i+1)+"层");
                for (String a:str)
                {
                    System.out.print(a+"\t");
                }
                System.out.println("");
            }
        }}
    class Frame2_jButton1_actionAdapter implements ActionListener {
        private Frame2 adaptee;
        Frame2_jButton1_actionAdapter(Frame2 adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.jButton1_actionPerformed(e);
        }
    }
      

  3.   

    谢谢!太好了,非常感谢joejoe1991
      

  4.   

    有个地方没看明白
                          for  (String  a:str)  ------〉啥意思?
                           {  
                                   System.out.print(a+  "\t  ");  
                           }  
      

  5.   

    for each 结构
      和for循环差不多的。 jdb5新加的功能
      

  6.   

    哦,知道了,呵呵,谢谢我说怎么在jbuilder2005里编译错误哪,他的jdk1.4的