2010-12-23 1 views
1

내 코드, javafx listview API의 디렉토리 목록에 대한 기본 treeview가 필요에 맞게 수정했습니다.java.io.file.listFiles의 getName 방법은 무엇입니까?

def home_dir = System.getProperty("user.home"); 
    def dir = new File("{home_dir}/Android_Surgeon/Projects"); 

var projectTree = TreeView { 

     root: TreeItem { 
     data: dir 
     expanded:false 
     isLeaf: isLeaf 
     createChildren: createChildren; 
    } 
    showRoot: false 

}

function createChildren(item:TreeItemBase):TreeItemBase[] { 
var file = item.data as File; 
if (file.isDirectory()) { 
    return for (f in file.listFiles()) { 
     TreeItem { 
      data: f 
      createChildren: createChildren; 
      isLeaf: isLeaf; 
     } 
    } 

} 
return []; 

}

function isLeaf(item:TreeItemBase):Boolean { 
def file = item.data as File; 
return file.isFile(); 

}

내가 프로그래밍 비교적 새로운 오전, 나는 자바의 이름을 얻는 방법을 알아낼 수 없습니다. io.file createchildren 함수의 루프에 대한 파일 배열입니다. 이 코드가 실행되면 트리 뷰의 모든 항목의 절대 경로가 나열되어 추악하고 읽기 어려워집니다. 대안으로 필자가 사용하는 def dir = new File ("{home_dir}/Android_Surgeon/Projects")의 이름을 얻는 방법도 있습니다. 그러면 하위 폴더와 파일에 절대 경로가 있습니다. 첫 번째 옵션이 좋습니다. 내 자신의 노력에 일주일이 지쳐서 도움이 필요해 !!! 감사합니다 ...

+0

당신은 java로 태그를 추가했습니다! –

답변

0

Java가 아닌 자바처럼 보입니다. 하지만 File 클래스가 Java 클래스 인 경우 f.getName()을 호출하면됩니다. 코드를 살펴보면, TreeItemdata을 파일 이름으로 설정하려고한다고 생각합니다.

그래서

:

TreeItem { 
    data: f.getName(); 
    createChildren: createChildren; 
    isLeaf: isLeaf; 
} 

어느 쪽이든, 또는 이름 만 반환 toString를 구현하는 File 객체에 대한 몇 가지 래퍼로 data을 설정합니다.

+0

다음은 바인딩에서 f.getName() Exception을 실행할 때의 결과입니다. java.lang.ClassCastException : java.lang.String을 java.io.File로 캐스팅 할 수 없습니다. at openproject.Main.isLeaf (Main.fx : 63) – drew408

관련 문제