2011-08-03 2 views
0

누구든지 한 트리의 DataFlavor를 다른 트리에 허용 할 수 있습니까? 나는 몇 가지 자습서를 따라 왔으며 두 나무 내에서 끌어서 놓기 작업을 수행했지만 두 개체 사이를 드래그 할 수 있기를 원합니다.2 JTree (Java) 사이의 DataFlavors

재정의 된 importData 메서드 내에서 예외를 throw하는 부분입니다.

try { 
     Transferable t = support.getTransferable(); 
     nodes = (MyNode[])t.getTransferData(nodesFlavor); 
} catch(UnsupportedFlavorException ufe) { 
     System.out.println("UnsupportedFlavor: " + ufe.getMessage()); 
} catch(java.io.IOException ioe) { 
     System.out.println("I/O error: " + ioe.getMessage()); 
} 

throw되는 예외는 다음과 같습니다.

UnsupportedFlavor : 응용 프로그램/

X-자바 JVM - 지역 - objectref도 어떤 도움을 주시면 감사하겠습니다.

건배,

+0

코드를 수정하여 'UnsupportedFlavorException'에 스택 추적을 출력하고 trace? – AngerClown

답변

1

는 사용자 지정 TransferHandler를 구현해야합니다. the java tutorial에서

목록, 테이블 및 트리는 기본적으로 삭제를 지원하지 않습니다. 의 이유는이 구성 요소의 드롭을 처리하는 다목적 방법이 없다는 것입니다. ... Swing은 이러한 구성 요소에 기본 구현 을 제공 할 수 없지만 삭제를위한 프레임 워크는 여기에 있습니다. 당신은 데이터의 실제 수입을 관리하는 사용자 정의의 TransferHandler를 제공하는 유일한 이 필요합니다. "

당신이 꽤 쉽게해야 문자열로 트리 노드의 단지 이름을 내보내는 경우. 그 나머지 부분을 참조하십시오 튜토리얼에서이 작업을 수행하는 방법에 대한 정보를 얻을 수 있습니다. 개체를 내보내려는 경우에는 Transferable 구현을 직접 만들어야합니다.

+0

내 자신의 TransferHandler 클래스가 있고 드래그 앤 드롭이 각 트리 내에서 올바르게 작동합니다. 한 트리에서 다른 트리로 노드를 드래그하려고하면 문제가 발생합니다. 데이터 유형은 동일한 클래스의 서로 다른 인스턴스 임에도 불구하고 사전 준비되지 않았습니다. – Intern87