Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/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_File_System_Jtree - Fatal编程技术网

Java JTree-仅具有固定文件扩展名的文件系统查看器树

Java JTree-仅具有固定文件扩展名的文件系统查看器树,java,file,system,jtree,Java,File,System,Jtree,我正在写一个学校项目,我有一个问题无法解决。 我有一个显示目录和文件路径的树,但我只需要显示.mp3和.wav文件。有人能给我一些建议吗? 我有一个具有树模型的类: public boolean isLeaf(Object node) { File file = (File) node; return file.isFile(); } public int getIndexOfChild(Object parent, Object child) { File direc

我正在写一个学校项目,我有一个问题无法解决。 我有一个显示目录和文件路径的树,但我只需要显示.mp3和.wav文件。有人能给我一些建议吗? 我有一个具有树模型的类:

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

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;

}

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

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

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

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

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

String getFileDetails(File file) {
    if (file == null)
        return "";
    StringBuffer buffer = new StringBuffer();
    buffer.append("Name: " + file.getName() + "\n");
    buffer.append("Path: " + file.getPath() + "\n");
    buffer.append("Size: " + (double) (file.length() / 1024) / 1024 + " MB" + "\n");
    return buffer.toString();
}
公共布尔isLeaf(对象节点){
文件=(文件)节点;
返回file.isFile();
}
public int getIndexOfChild(对象父对象、对象子对象){
文件目录=(文件)父目录;
文件文件=(文件)子文件;
String[]children=directory.list();
for(int i=0;i
无论您在何处列出这些子项,如上面所述,都要知道
File.list()
也可以采取一些措施。还有一个类似的方法叫做
File.listFiles()
,它可以采取(非常类似的)步骤。使用其中之一,您可以按文件名(包括扩展名)筛选文件

String[] children = directory.list();