0

我目前正忙于将目录读入 ArrayList 或者更好的是 Java 中的 Array。我想在 JTree 中使用数据。

这是我目前使用的代码:

//After the definiton of the Class
private ArrayList<File> files = new ArrayList<File>();

// In the main method
this.parse(new File("."));
DefaultMutableTreeNode root = processHierarchy(files.toArray());
this.tree = new JTree(root);

private void parse(File parent)
{
files.add(parent);
    if(parent.isDirectory())
    {
        System.out.println("DIR: "+parent.getName());

        String[] child = parent.list();

        if(child != null)
        {
            for(int i = 0; i < child.length; i++)
            {
                File f = new File(parent, child[i]);

                this.parse(f);
            }
        }
    }
    else
    {
        System.out.println("FILE: "+parent.getName());
    }
}

有人有想法吗?

4

1 回答 1

0

我在网上找到了这段代码,它搜索了一个路径,然后将其显示在JTree.

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

public class SimpleTree extends JPanel {

JTree tree;
  DefaultMutableTreeNode root;
  public SimpleTree() {
    root = new DefaultMutableTreeNode("root", true);
    getList(root, new File("C:\\Program Files")); // change path here
    setLayout(new BorderLayout());
    tree = new JTree(root);
    tree.setRootVisible(false);
    add(new JScrollPane((JTree)tree),"Center");
    }

  public Dimension getPreferredSize(){
    return new Dimension(200, 120);
    }

  public void getList(DefaultMutableTreeNode node, File f) {
     if(!f.isDirectory()) {
         // We keep only JAVA source file for display in this HowTo
         if (f.getName().endsWith("java")) {
            System.out.println("FILE  -  " + f.getName());
            DefaultMutableTreeNode child = new DefaultMutableTreeNode(f);
            node.add(child);
            }
         }
     else {
         System.out.println("DIRECTORY  -  " + f.getName());
         DefaultMutableTreeNode child = new DefaultMutableTreeNode(f);
         node.add(child);
         File fList[] = f.listFiles();
         for(int i = 0; i  < fList.length; i++)
             getList(child, fList[i]);
         }
    }

  public static void main(String s[]){
    MyJFrame frame = new MyJFrame("Directory explorer");
    }
  }

class WindowCloser extends WindowAdapter {
  public void windowClosing(WindowEvent e) {
    Window win = e.getWindow();
    win.setVisible(false);
    System.exit(0);
    }
  }

class MyJFrame extends JFrame {
  JButton b1, b2, b3;
  SimpleTree panel;
  MyJFrame(String s) {
    super(s);
    panel = new SimpleTree();
    getContentPane().add(panel,"Center");
    setSize(300,300);
    setVisible(true);
    setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    addWindowListener(new WindowCloser());
    }

}

来源:http ://www.rgagnon.com/javadetails/java-0324.html

于 2013-04-07T18:13:10.660 回答