Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 显示所有系统';在jtree中创建文件和文件夹_Java_Netbeans 7_Jtree - Fatal编程技术网

Java 显示所有系统';在jtree中创建文件和文件夹

Java 显示所有系统';在jtree中创建文件和文件夹,java,netbeans-7,jtree,Java,Netbeans 7,Jtree,我是java开发新手 我正在尝试显示系统的所有驱动器,包括所有文件和文件夹。 此代码工作正常,但仅显示单个目录或驱动器。 如何使其显示系统上的所有驱动器,包括文件夹和文件。 提前谢谢 ///显示特定目录的实现(当前使用netbeans) //文件系统模型 public class FileSystemModel implements TreeModel { private File root; private Vector listeners = new Vector(); public Fi

我是java开发新手 我正在尝试显示系统的所有驱动器,包括所有文件和文件夹。 此代码工作正常,但仅显示单个目录或驱动器。 如何使其显示系统上的所有驱动器,包括文件夹和文件。 提前谢谢

///显示特定目录的实现(当前使用netbeans)

//文件系统模型

public class FileSystemModel implements TreeModel {
private File root;
private Vector listeners = new Vector();

public FileSystemModel(File rootDirectory) 
{        
   root = rootDirectory;
}

@Override
public Object getRoot() {

    return root;
}

@Override
public Object getChild(Object parent, int index) {
    File directory = (File) parent;
    String[] children = directory.list();


    return new FileSystemModel.TreeFile(directory, children[index]);
}

@Override
public int getChildCount(Object parent) {
    File file = (File) parent;
    if (file.isDirectory()) {
        String[] fileList = file.list();

        if (fileList != null) {
            return file.list().length;
        }
    }
    return 0;
}

@Override
public boolean isLeaf(Object node) {
    File file = (File) node;
    return file.isFile();
}

@Override
public int getIndexOfChild(Object parent, Object child) {
    File directory = (File) parent;
    File file = (File) child;
    String[] children = directory.list();
    for (int i = 0; i < children.length; i++) {
        if (file.getName().equals(children[i])) {
            return i;
        }
    }
    return -1;

}

@Override
public void valueForPathChanged(TreePath path, Object value) {
    File oldFile = (File) path.getLastPathComponent();
    String fileParentPath = oldFile.getParent();
    String newFileName = (String) value;
    File targetFile = new File(fileParentPath, newFileName);
    oldFile.renameTo(targetFile);
    File parent = new File(fileParentPath);
    int[] changedChildrenIndices = {getIndexOfChild(parent, targetFile)};
    Object[] changedChildren = {targetFile};
    fireTreeNodesChanged(path.getParentPath(), changedChildrenIndices,     changedChildren);

}

private void fireTreeNodesChanged(TreePath parentPath, int[] indices, Object[] children) {
    TreeModelEvent event = new TreeModelEvent(this, parentPath, indices, children);
    Iterator iterator = listeners.iterator();
    TreeModelListener listener = null;
    while (iterator.hasNext()) {
        listener = (TreeModelListener) iterator.next();
        listener.treeNodesChanged(event);
    }
}

@Override
public void addTreeModelListener(TreeModelListener listener) {
    listeners.add(listener);
}

@Override
public void removeTreeModelListener(TreeModelListener listener) {
    listeners.remove(listener);
}

private class TreeFile extends File {

    public TreeFile(File parent, String child) {
        super(parent, child);
    }

    @Override
    public String toString() {
        return getName();
    }
}
} 
public类FileSystemModel实现TreeModel{
私有文件根;
私有向量侦听器=新向量();
公共文件系统模型(文件根目录)
{        
root=rootDirectory;
}
@凌驾
公共对象getRoot(){
返回根;
}
@凌驾
公共对象getChild(对象父对象,int索引){
文件目录=(文件)父目录;
String[]children=directory.list();
返回新的FileSystemModel.TreeFile(目录,子目录[index]);
}
@凌驾
public int getChildCount(对象父对象){
文件文件=(文件)父级;
if(file.isDirectory()){
字符串[]fileList=file.list();
如果(文件列表!=null){
返回file.list().length;
}
}
返回0;
}
@凌驾
公共布尔isLeaf(对象节点){
文件=(文件)节点;
返回file.isFile();
}
@凌驾
public int getIndexOfChild(对象父对象、对象子对象){
文件目录=(文件)父目录;
文件文件=(文件)子文件;
String[]children=directory.list();
for(int i=0;i
要找到整个树,您需要识别其中一个子目录本身是目录,并收集其内容。看起来您希望在调用
getChild
的方法中实现这一点(getChildren是一个更好的名称)

public class FileSystemModel implements TreeModel {
private File root;
private Vector listeners = new Vector();

public FileSystemModel(File rootDirectory) 
{        
   root = rootDirectory;
}

@Override
public Object getRoot() {

    return root;
}

@Override
public Object getChild(Object parent, int index) {
    File directory = (File) parent;
    String[] children = directory.list();


    return new FileSystemModel.TreeFile(directory, children[index]);
}

@Override
public int getChildCount(Object parent) {
    File file = (File) parent;
    if (file.isDirectory()) {
        String[] fileList = file.list();

        if (fileList != null) {
            return file.list().length;
        }
    }
    return 0;
}

@Override
public boolean isLeaf(Object node) {
    File file = (File) node;
    return file.isFile();
}

@Override
public int getIndexOfChild(Object parent, Object child) {
    File directory = (File) parent;
    File file = (File) child;
    String[] children = directory.list();
    for (int i = 0; i < children.length; i++) {
        if (file.getName().equals(children[i])) {
            return i;
        }
    }
    return -1;

}

@Override
public void valueForPathChanged(TreePath path, Object value) {
    File oldFile = (File) path.getLastPathComponent();
    String fileParentPath = oldFile.getParent();
    String newFileName = (String) value;
    File targetFile = new File(fileParentPath, newFileName);
    oldFile.renameTo(targetFile);
    File parent = new File(fileParentPath);
    int[] changedChildrenIndices = {getIndexOfChild(parent, targetFile)};
    Object[] changedChildren = {targetFile};
    fireTreeNodesChanged(path.getParentPath(), changedChildrenIndices,     changedChildren);

}

private void fireTreeNodesChanged(TreePath parentPath, int[] indices, Object[] children) {
    TreeModelEvent event = new TreeModelEvent(this, parentPath, indices, children);
    Iterator iterator = listeners.iterator();
    TreeModelListener listener = null;
    while (iterator.hasNext()) {
        listener = (TreeModelListener) iterator.next();
        listener.treeNodesChanged(event);
    }
}

@Override
public void addTreeModelListener(TreeModelListener listener) {
    listeners.add(listener);
}

@Override
public void removeTreeModelListener(TreeModelListener listener) {
    listeners.remove(listener);
}

private class TreeFile extends File {

    public TreeFile(File parent, String child) {
        super(parent, child);
    }

    @Override
    public String toString() {
        return getName();
    }
}
}