2011-04-21 5 views
1

JTree를 사용하여 표시하려는 여러 객체 (다양한 고유 문자열 + 변수 포함)가 있습니다. 지금까지 나는 나무를 잘 설정하는 코드를 작성했습니다. JTree 객체 캐스팅

for(myClass Item : objectArray){ 
    ... 
    DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(Item); 
    parentNode.add(newChild) 
    ... 
} 

I는 다음의 객체 식별자 myClasstoString() 방법을 구현 하였다. 그래서 예를 들어, 내 JTree에는 다음과 같습니다

Root node 
     + object1 
     + object2 
     + object3 

, 내가 GUI를 사용하여 필요한 개체를 선택 할 수 있도록하려면, 액세스 리스너를 추가는 방법이고 객체의 멤버 변수를 표시합니다. 그러나 개체를 검색하는 데 문제가 있습니다. 특히이 라인에서 :

다음과 같은 런타임 오류를 제공
myClass selectedObject = (myClass) jTree.getLastSelectedPathComponent() 

는 :

javax.swing.tree.DefaultMutableTreeNode cannot be cast to myClass 

은 원래 캐스트를 취소 할 수있는 방법은 없을까? 틀림없이 Jtree 노드로 캐스팅하는 것은 객체를 여분의 메소드와 변수로 래핑합니다. 나는 무엇을해야할지 모르겠습니다.

답변

2

DefaultMutableTreeNode에서 getUserObject()를 원한다고 생각합니다. 그런 다음 그것을 수업에 캐스팅 할 수 있습니다.

+0

우를보십시오, 나는 도구입니다. 당신은 완전히 바르게 고맙습니다. – Roger

0

DefaultMutableTreeNode node = (DefaultMutableTreeNode) 
           jTree.getLastSelectedPathComponent(); 

if (node != null) 
{ 
    myClass selectedObject = (myClass) node.getUserObject(); 
} 
+0

고맙습니다. – Roger