7
내가 가지는 JTree의 잎을 드래그 할 필요가 잎하게하지만, 다음 코드 조각은 드래그 트리의 모든 노드 수 :의 JTree는 드래그
tree.setDragEnabled(true);
나는 특정 정보을에 드래그 할 수있는 요소를 제한 할 수있는 방법을 속성 myNode.isLeaf()와 같은 트리 노드;
TIA의 jaster는
내가 가지는 JTree의 잎을 드래그 할 필요가 잎하게하지만, 다음 코드 조각은 드래그 트리의 모든 노드 수 :의 JTree는 드래그
tree.setDragEnabled(true);
나는 특정 정보을에 드래그 할 수있는 요소를 제한 할 수있는 방법을 속성 myNode.isLeaf()와 같은 트리 노드;
TIA의 jaster는
이 비 리프 노드에 널 Transferable
을 반환 JTree
의 TransferHandler
을 변경하여 수행 할 수 있습니다.
JTree tree = new JTree();
tree.setDragEnabled(true);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setTransferHandler(new TransferHandler(null) {
public int getSourceActions(JComponent c) {
return MOVE;
}
protected Transferable createTransferable(JComponent c) {
JTree tree = (JTree) c;
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getSelectionPath().getLastPathComponent();
if (node.isLeaf()) {
// TODO create the Transferable instance for the selected leaf
} else {
return null;
}
}
});
단지 조심, 아마도 유일한 방법 :
여기에 빠른 예입니다 사용자 정의 핸들러를 설치할 때 모든 기본 드래그 동작이 손실됩니다. 정상적인 작업은 모든 작업을 기본 처리기에 위임하고 전송할 수있는 생성을 가로채는 것입니다. 불행히도 지난 번에 보지 못했던 것입니다 (BasicTransferHandler의 일부 중요한 부분은 개인 또는 보호 된 패키지이며 정확하게 잊어 버렸습니다) – kleopatra
Thx , 의도 한대로 작동합니다. – jaster