package adresare; import javax.swing.*; import javax.swing.tree.*; import java.io.*; public class Window extends javax.swing.JFrame { DefaultTreeModel m; MyNode root; public Window() { initComponents(); String s = "c:\\Program Files"; root = new MyNode (s); root.path = s; m = new DefaultTreeModel (root); jTree1.setModel (m); showDir (root, root.path, 2); } private void showDir (MyNode above, String path, int level) { // import java.io.*; File dir = new File (path); String [] list = dir.list (); above.scanned = true; // for (int i = 0; i < list.length; i++) if (list != null) for (String s : list) { MyNode node = new MyNode (s); node.path = path + File.separator + s; above.add(node); if (level > 1) { File f = new File (node.path); if (f.isDirectory()) showDir (node, node.path, level-1); } } m.reload(above); } private void rescanDir (MyNode above, int level) { if (above.scanned) { if (level > 1) { int cnt = above.getChildCount(); for (int i = 0; i < cnt; i++) { TreeNode tn = above.getChildAt (i); if (tn instanceof MyNode) { MyNode node = (MyNode) tn; rescanDir (node, level-1); } } } } else { showDir (above, above.path, level); } } } package adresare; import javax.swing.*; import javax.swing.tree.*; public class MyNode extends DefaultMutableTreeNode { public String path; public boolean scanned = false; public MyNode (String p) { super (p); } }