I'm working on project were I need to populate the file directory structure of the computer in a JTree. I have been able to populate the files in the user directory using the code below but no matter what I try I cannot get all of the drives to be listed and eventually allow the use to work done to a file level so they can select it. Any ideas on what I'm missing? I know the user.dir property will only bring back the user directory information but it is the only thing I have been able to get working.

Thanks in advance

Java Code:
import java.io.File;
import java.util.Enumeration;
import java.util.Vector;
import javax.swing.event.TreeModelEvent;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;

public class FileDirectory implements TreeModel {
          private String root; // The root identifier

          private Vector listeners; // Declare the listeners vector

          public FileDirectory() {

            root = System.getProperty("user.dir");
            File tempFile = new File(root);
            root = tempFile.getParent();

            listeners = new Vector();
          }

          public Object getRoot() {
            return (new File(root));
          }

          public Object getChild(Object parent, int index) {
            File directory = (File) parent;
            String[] directoryMembers = directory.list();
            return (new File(directory, directoryMembers[index]));
          }

          public int getChildCount(Object parent) {
            File fileSystemMember = (File) parent;
            if (fileSystemMember.isDirectory()) {
              String[] directoryMembers = fileSystemMember.list();
              return directoryMembers.length;
            }

            else {

              return 0;
            }
          }

          public int getIndexOfChild(Object parent, Object child) {
            File directory = (File) parent;
            File directoryMember = (File) child;
            String[] directoryMemberNames = directory.list();
            int result = -1;

            for (int i = 0; i < directoryMemberNames.length; ++i) {
              if (directoryMember.getName().equals(directoryMemberNames[i])) {
                result = i;
                break;
              }
            }

            return result;
          }

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

          public void addTreeModelListener(TreeModelListener l) {
            if (l != null && !listeners.contains(l)) {
              listeners.addElement(l);
            }
          }

          public void removeTreeModelListener(TreeModelListener l) {
            if (l != null) {
              listeners.removeElement(l);
            }
          }

          public void valueForPathChanged(TreePath path, Object newValue) {
            // Does Nothing!
          }

          public void fireTreeNodesInserted(TreeModelEvent e) {
            Enumeration listenerCount = listeners.elements();
            while (listenerCount.hasMoreElements()) {
              TreeModelListener listener = (TreeModelListener) listenerCount.nextElement();
              listener.treeNodesInserted(e);
            }
          }

          public void fireTreeNodesRemoved(TreeModelEvent e) {
            Enumeration listenerCount = listeners.elements();
            while (listenerCount.hasMoreElements()) {
              TreeModelListener listener = (TreeModelListener) listenerCount.nextElement();
              listener.treeNodesRemoved(e);
            }

          }

          public void fireTreeNodesChanged(TreeModelEvent e) {
            Enumeration listenerCount = listeners.elements();
            while (listenerCount.hasMoreElements()) {
              TreeModelListener listener = (TreeModelListener) listenerCount.nextElement();
              listener.treeNodesChanged(e);
            }

          }

          public void fireTreeStructureChanged(TreeModelEvent e) {
            Enumeration listenerCount = listeners.elements();
            while (listenerCount.hasMoreElements()) {
              TreeModelListener listener = (TreeModelListener) listenerCount.nextElement();
              listener.treeStructureChanged(e);
            }

          }
    }