Verzeichnisstruktur als Baum?



  • hallo, wie kann ich grafisch alle verzeichnisse inkl. aller dateien in einer verzeichnisstruktur ausgeben, so wie beim explorer? danke:)



  • Mit Google wird man schnell fündig 😉

    einfach mal die Wörter java directory JTree eingeben und schwupps kommt das hier

    [java]/**
    * Java Directory Browser.
    *
    * Swing example of a dynamically-built JTree,
    * using a file system hierarchy as a data model.
    * (Tested with Swing 1.02)
    */

    import java.awt.;
    import java.awt.event.
    ;
    import java.io.;
    import java.util.
    ;
    import javax.swing.;
    import javax.swing.tree.
    ;
    import javax.swing.event.*;

    /**
    * A TreeNode that contains a File object
    */
    class FileTreeNode extends DefaultMutableTreeNode {
    boolean hasbeenread;

    public FileTreeNode(File file) {
    super(file);
    hasbeenread = false;
    }

    public boolean readTree() {
    return readTree(false);
    }

    public boolean readTree(boolean b) {
    if(hasbeenread)
    return false;

    String list[] = getFileObject().list();
    if(list!= null) {
    for(int i=0; i<list.length;i++) {
    FileTreeNode subnode = new FileTreeNode(new File(getFileObject(),
    list[i]));
    add(subnode);
    if(b)
    subnode.readTree(b);
    }
    }
    hasbeenread=true;
    return true;
    }

    public File getFileObject() {
    return (File)getUserObject();
    }

    public String toString() {
    return getFileObject().getName();
    }

    public boolean isLeaf() {
    return ((File)userObject).isFile();
    }
    }

    /**
    * Listens for expansion events
    */
    class HierarchyBrowserUpdater implements TreeExpansionListener {
    FileTreeNode root;
    JTree jtree;
    DefaultTreeModel treemodel;
    Frame frame;

    public HierarchyBrowserUpdater(JTree tree, FileTreeNode node,
    DefaultTreeModel tmodel, Frame theFrame) {
    root = node;
    jtree = tree;
    treemodel = tmodel;
    frame = theFrame;
    }

    public void treeExpanded(TreeExpansionEvent event) {

    TreePath path = event.getPath();

    System.out.print("Received expansion event on ");
    System.out.println(path);

    FileTreeNode node = (FileTreeNode)path.getLastPathComponent();
    System.out.println("Node level: " + node.getLevel());
    System.out.println("Children " + node.getChildCount());
    System.out.println("Reading subtree " + node.toString());

    frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
    frame.setEnabled(false);

    if(node.readTree()) {
    System.out.println("Calling nodesWereInserted");
    int childrenIdx[] = new int[node.getChildCount()];
    int i=0;
    for(Enumeration e = node.children(); e.hasMoreElements();) {
    Object obj = e.nextElement();
    childrenIdx[i] = node.getIndex((TreeNode)obj);
    i++;
    }
    treemodel.nodesWereInserted(node, childrenIdx);
    }
    frame.setEnabled(true);
    frame.setCursor(Cursor.getDefaultCursor());
    }

    public void treeCollapsed(TreeExpansionEvent event) {
    }
    }

    /**
    * Shows a tree structure (of a directory)
    */
    public class TreeFrame extends Frame implements WindowListener {

    public TreeFrame(String dir) {
    setLayout(new BorderLayout());
    addNotify();
    setSize(getInsets().left + getInsets().right + 485,
    getInsets().top + getInsets().bottom + 367);
    setTitle("Java Directory Browser");

    FileTreeNode root = (FileTreeNode)buildTree(dir);
    DefaultTreeModel treemodel = new DefaultTreeModel(root);
    JTree tree = new JTree(treemodel);
    tree.setDoubleBuffered(true);

    HierarchyBrowserUpdater upd = new HierarchyBrowserUpdater(tree,
    root,
    treemodel,
    this);
    tree.addTreeExpansionListener(upd);

    JScrollPane scrollpane = new JScrollPane();
    scrollpane.getViewport().add(tree);
    scrollpane.setDoubleBuffered(true);

    add("Center", scrollpane);
    addWindowListener(this);
    }

    public TreeNode buildTree(String dir) {
    FileTreeNode root = new FileTreeNode(new File(dir));
    root.readTree(false);
    return (TreeNode)root;
    }

    public synchronized void setVisible(boolean show) {
    setLocation(50, 50);
    super.setVisible(show);
    }

    public void windowClosed(WindowEvent event) {
    }

    public void windowDeiconified(WindowEvent event) {
    }

    public void windowIconified(WindowEvent event) {
    }

    public void windowActivated(WindowEvent event) {
    }

    public void windowDeactivated(WindowEvent event) {
    }

    public void windowOpened(WindowEvent event) {
    }

    public void windowClosing(WindowEvent event) {
    System.exit(0);
    }

    public static void main(String argv[]) {
    String dir = System.getProperty("user.dir");
    if(argv!=null && argv.length==1)
    dir = argv[0];
    TreeFrame myframe = new TreeFrame(dir);
    myframe.setVisible(true);
    }
    }[/code]



  • 🙂


Anmelden zum Antworten