1

我有以下代码用于在 Java 中创建目录结构。 代码工作正常
但我有一些疑问
对于我检查扩展节点的目录结构是目录还是文件如果它是目录然后遍历它并添加该父目录的文件和子目录。
每次用户扩展节点时我都会这样做。第一次遍历目录并添加节点时可以。
但是当它第二次展开时,代码将添加与第一次展开相同的内容,依此类推......
但是JTree包含的节点与目录中的节点相同,它应该包含(目录内容*节点展开的时间)
这是如何维护的,每次节点扩展时我都会添加,并且我将节点作为第一次扩展。
我犯了什么错误?
代码 :

import java.io.*;    
import javax.swing.*;    
import javax.swing.tree.*;    
import java.awt.*;    
import java.awt.event.*;    
import java.util.*;    
import javax.swing.event.*;    
public class tree_drive    
{    
    JFrame frm;    
    JFileChooser file_c;    
    JTree f_tree;    
    public tree_drive(String path)    
    {    
        frm=new JFrame("Jtree Demo");       
        Container cp=frm.getContentPane();      
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
        DefaultMutableTreeNode top = new DefaultMutableTreeNode(path);    
        f_tree=new JTree(top);    
        JScrollPane treeView = new JScrollPane(f_tree);    
        f_tree.addTreeSelectionListener(new TreeSelectionListener()    
        {    
            public void valueChanged(TreeSelectionEvent e)    
            {    
                DefaultMutableTreeNode node = (DefaultMutableTreeNode)                                              f_tree.getLastSelectedPathComponent();    
                frm.setTitle("You hava selected : "+ node.toString());    
                    if (node != null)    
                {
                    File t_file=new File(node.toString());    
                    if(t_file.isDirectory())    
                    {    
                        try    
                        {    
                            for(File f : t_file.listFiles()) 
                            {    
                                if(f.isDirectory())   
                                {
    node.add(new DefaultMutableTreeNode(f.getPath()+File.separatorChar,true));  
                                }    
                                else    
                                {    
                node.add(new    DefaultMutableTreeNode(f.getName(),false));     
                                }    
                            }       

                        }    
                        catch(Exception ge)    
                        {   System.out.println(e);              

                        }                   
                    }    
                }    
            }    
        });    
        frm.add(treeView);    
        frm.setSize(500,500);    
        frm.setVisible(true);    
        frm.pack();         
    }    
    public static void main(String ...t)    
    {       
        try    
        {    
            new tree_drive(t[0]);           
        }    
        catch(Exception e)    
        {    
            System.out.println("Plese Specify path from Command line");    
        }           
    }    
}

输出 :

4

0 回答 0