2012-06-29 4 views
1

그래, 나는 Java에 익숙하지 않으므로 제발 참아주십시오.JTree 노드 당 여러 값 저장 및 사용

Netbeans 6.8을 사용하여 JTree 구성 요소가 포함 된 소형 데스크탑 응용 프로그램을 작성하고 있습니다. 제 요구 사항은 트리 구조를 저장하고로드 할 수 있지만 트리 노드 당 세 가지 정보 항목을 허용한다는 것입니다. - 노드로 표시 할 텍스트, 고유 한 식별자 및 파일 이름입니다.

물론 노드를 클릭 할 때 3 비트의 정보를 모두 얻을 수 있어야합니다.

나는 성공적으로 저장 및 getModel() 및/encoderXMLDecoder를 사용하여 트리 모델을로드하지만, 물론 이것은 단지 기본 트리 모델을 절약 할 수있다.

사용자 지정 트리 모델을 만드는 데 필요한 몇 가지 자습서를 따라 왔지만 혼란 스럽다는 것을 알았습니다. 물론 나에게 말한 내용을 내 자신의 프로젝트로 전송할 수 없었습니다. 물론 일반적으로 전체 예제 응용 프로그램을 한 가지.

이와 같은 트리 모델이 있다고해도 누군가가 그러한 모델을 만드는 방법을 설명 할 수 있고 가장 중요한 것은 모델을 응용 프로그램에 이미있는 JTree에 배치하는 방법입니다. 노드가 클릭되었을 때 정보 검색 - 현재 선택된 노드를 찾고 해당 텍스트를 검색 할 수 있음)

이것이 불가능할 경우, 동일한 기능을 수행하는 다른 방법을 기꺼이 들으십시오.

솔루션 모두에게 감사의 마음을 전합니다. 그러나 정확한 답변은 Andrew에게 먼저 게시해야합니다.

관심있는 사용자 : Netbeans IDE를 사용하여 새 Javabean 개체를 만들었습니다. 이 객체와 일반 객체의 차이점을 알게 된 후 새로 생성 된 Javabean 객체를 트리 노드에 배치했습니다. 모든 것을 좋게 만들기 위해 저의 원래 저장 방법은 여전히 ​​잘 작동합니다!

여러분의 노력에 감사드립니다.

MVK

답변

4

텍스트는 노드의 고유 식별자 및 파일 이름을 표시한다.

JavaBeanObject에 캡슐화하여 적절한 렌더러를 사용하십시오.

+1

질문에 답변이되지 않는 경우 질문하십시오. –

+0

감사합니다 Andrew,하지만 이전보다 맞춤 테이블 모델을 만드는 방법을 더 잘 이해하지 못했습니다! 문제없이 개체의 필수 필드를 캡슐화 할 수 있지만 이러한 개체를 트리 모델로 가져 오는 방법 (그리고 트리로 가져 오는 방법)을 모르며 렌더러가 무엇인지 알지 못합니다. 또는 아닙니다! 객체를 트리 모델과 트리로 가져 왔다고 가정하면 트리 구조를 XML 파일로 저장하고 다시로드 할 수 있습니까? – MaxVK

+0

개체 자체를 추정하는 것은 [JavaBean] (http://docs.oracle.com/javase/tutorial/javabeans/index.html)입니다. –

1

기본적으로 JTree는 DefaultTreeModel을 사용하며 DefaultTreeModel은 DefaultMutableTreeNode를 사용하여 각 노드를 나타냅니다. 노드에 객체를 할당 할 수 있으며 toString() 메서드를 호출하여 렌더링됩니다.

그래서 가장 간단한 해결책은 클래스에서 필요한 모든 데이터를 캡슐화하고 표시 할 항목을 반환하는 toString() 메서드를 구현하는 것입니다. 추가 보너스로, JavaBeans 스펙에 따라 클래스를 구현하면 XML 직렬화가 무료로 제공됩니다.

스윙 튜토리얼, 특히 How to use Trees을 살펴 봐야합니다. 나무, 목록 및 표를 처리하는 방법을 읽은 후에 모델, 렌더러 및 편집자가 더 명확 해집니다.

+0

죄송합니다 Soronthar, 귀하의 게시물을 일찍 볼 수 없습니다. 답장을 보내 주셔서 감사합니다. Iv는 Trees Tutorial 사용법을 읽었으며 거기에있는 예제 중 하나를 따르려고했지만 netbeans 환경 내에서 내가하려고하는 것으로 설명한 내용을 조정할 수는 없었습니다. 또한 Javabeans 스펙 (Andrew가 링크를 제공했을 때)을 읽었지만 아직 세 개의 문자열을 포함하고 jtree에서 노드로 사용할 수있는 JavaBean을 작성하는 방법을 알아 냈습니다. – MaxVK

+0

* "3 개의 문자열을 포함하는 JavaBean 생성"* BTW - "* 노드로 표시 할 텍스트"*? 그것은 '3rd string'입니까? –

+0

'표시 할 텍스트'는 응용 프로그램의 트리에서 보이는 것으로 첫 번째 문자열이고 고유 ID는 두 번째 문자열이며 파일 이름은 세 번째 문자열입니다. 노드를 클릭하면 파일을 올바르게로드하고 메시지를 표시 할 수 있도록 세 가지를 모두 반환해야합니다. – MaxVK