2014-06-20 3 views
0

학교 프로젝트를 작성하는 중이고 해결할 수없는 한 가지 문제가 있습니다. 디렉토리와 파일 경로를 보여주는 트리가 있지만 .mp3 및 .wav 파일 만 표시해야합니다. 누군가가 저에게 어떻게 조언 할 수 있습니까? 위처럼, 아이들을 나열하는 곳마다JTree - 고정 된 파일 확장명을 가진 파일 시스템 뷰어 트리

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

답변

1
String[] children = directory.list(); 

는, File.list()FilenameFilter를 취할 수 있다는 사실을 알고 : 나는 나무 모델 클래스가 있습니다. File.listFiles()이라는 유사한 방법이 있으며 FileFilter (매우 유사)을 사용할 수 있습니다. 이 중 하나를 사용하여 파일 이름 (확장명 포함)으로 파일을 필터링 할 수 있습니다.

+0

대단히 감사합니다! – Farys