2011-11-16 3 views
1

JTree를 사용하여 파일 트리를 작성 했으므로 이제는 더 효율적으로 만들려고 노력하고 있습니다. 나는 게으른 로딩을 구현하려고 노력하고있다. 그러나 나는 내 인생에서 노드가 다음 레이어를 확장하기 위해 어느 파일인지 인식 할 수 없다. 나는 그들의 레벨에서 파일 이름의리스트에 대해 그들의 이름을 확인하도록 노력했다. 그리고 어떤 이유로 그것은 작동하지 않는다. 장기적으로는 그렇게되지 않을 것입니다. 나는 파일 자체를 노드 내용으로 설정하려고했지만 여전히 파일로 인식하지 못한다.JTree 파일 트리의 노드에서 어떤 파일인지 알 수있는 방법은 무엇입니까?

나는 간단한 것을 놓치고있을 것이라고 확신하지만, 그것이 무엇이 될지 모른다. 나는 주변을 둘러 보았고 아무 것도 발견하지 못했다. 누구든지이 사실을 알 수있게 도와 줄 수 있습니까?

+0

[File Browser GUI] (http://codereview.stackexchange.com/questions/4446/file-browser-gui) 코드에서 시작하십시오.). –

답변

1

DefaultMutableTreeNode은 임의의 "사용자 개체"를 연결할 수 있습니다.이 경우 사용자 개체는 File 일 수 있습니다. 예를 들어 :

File file = new File("data.txt"); 
DefaultMutableTreeNode node = new DefaultMutableTreeNode(file); 

그런 다음 당신은 단순히 JTreeTreeSelectionListener를 추가하고 디렉토리 나 파일을 나타내는 여부에 따라 그 File 및 취할 적절한 조치를 얻기 위해 선택 DefaultMutableTreeNode를 심문 할 필요가있다.

+0

그것을 얻기 위해 어떻게 조사해야합니까? 당신이 제안한 방식은 내가 어떻게 해왔 는가하는 것이지만, 어떤 이유로 그것을 파일로 보지 않는 것 같습니다. 아니면 내 문제는 노드를 검색하는 방법입니까? 장소는 내가 filetree이 같은 쓴 만드는 방법을 배웠습니다. '공공 무효의 valueChanged (TreeSelectionEvent 전자) { \t DefaultMutableTreeNode의 노드 = (DefaultMutableTreeNode의) e.getPath() getLastPathComponent를(); ' 합니까 그 원인이 더 이상 사용자 객체를 포함하지 않습니까? – SaintWacko

+0

바, 제한을 편집하십시오. 내 이전 의견을 무시하고 문제를 발견했습니다. 실수로 코드 설정 노드의 일부를 파일 대신 문자열로 보냈습니다. 나는 또한 확장 할 대신에 선택에 그것을했다. 지금 당장 해결 된 모든 것을 얻었으니, 단지 남은 것은 최상위 노드를 항상 아래로 쌓아 올리는 이유를 알아내는 것뿐입니다.하지만 그것은 쉬워야합니다. 도와 주셔서 감사합니다! – SaintWacko

1

TreeWillExpandListener를 사용하여 지연 트리로드를 구현하는 것이 아닙니다. 필요한 경우 파일 검사 만하는 사용자 정의 트리 모델을 사용하십시오. 기존의 FileTreeModel에 대한 좋은 예가 있습니다. here

관련 문제