Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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_File_Jtree_Explorer - Fatal编程技术网

Java 如何在jtree中仅显示文件夹

Java 如何在jtree中仅显示文件夹,java,file,jtree,explorer,Java,File,Jtree,Explorer,我目前正在为我的JTree编写这段代码,但我希望它只显示文件夹,而不是展开以显示每个文件夹中的文件。稍后我将让我的程序在另一个面板中显示文件 package pm.entitymanager.presentation; import java.io.File; import java.util.Iterator; import java.util.Vector; import javax.swing.event.TreeModelEvent; import javax.swing

我目前正在为我的JTree编写这段代码,但我希望它只显示文件夹,而不是展开以显示每个文件夹中的文件。稍后我将让我的程序在另一个面板中显示文件

  package pm.entitymanager.presentation;

 import java.io.File;
 import java.util.Iterator;
 import java.util.Vector;
 import javax.swing.event.TreeModelEvent;
 import javax.swing.event.TreeModelListener;
 import javax.swing.tree.TreeModel;
 import javax.swing.tree.TreePath;

 /**
  *
  * @author Volpym
  */
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();
 /*       for (int j = 0; j< children.length; j++ ){
        System.out.println(children[j]);
    }       */

    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;
        }
    }

}

@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};
    fileTreeNodesChanged(path.getParentPath(), changedChildrenIndices, changedChildren);

}

private void fileTreeNodesChanged(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();
    }
}
包pm.entitymanager.presentation;
导入java.io.File;
导入java.util.Iterator;
导入java.util.Vector;
导入javax.swing.event.treemodelent;
导入javax.swing.event.TreeModelListener;
导入javax.swing.tree.TreeModel;
导入javax.swing.tree.TreePath;
/**
*
*@author Volpym
*/
公共类FileSystemModel实现TreeModel{
私有文件根;
私有向量侦听器=新向量();
公共文件系统模型(文件根目录){
root=rootDirectory;
}
@凌驾
公共对象getRoot(){
返回根;
}
@凌驾
公共对象getChild(对象父对象,int索引){
文件目录=(文件)父目录;
String[]children=directory.list();
/*for(int j=0;j

}

我使用了@ug_u提供的代码,我仍然在获取文件,在搜索网络后,我找到了这行代码,它们工作正常

    FilenameFilter directoryFilter = new FilenameFilter() {
@Override
public boolean accept(File file, String name) {

     return new File(file, name).isDirectory();
}

打得好,请原谅我。你应该接受你的要求。