2013-01-02 4 views
1

JTree에 사용하는 TransferHandler 클래스의 표준 키보드 액션 핸들러를 제거해야합니다. JTree는 노드가 삭제 될지 어떨지를 제어하는 ​​액세스 레벨기구를 구현합니다. 이 동작은 shift-delete와 같은 키보드 조합을 사용하여 각 사용자가 JTree에서 모든 노드를 삭제할 수있게하므로 무시됩니다.JTree는 TransferHandler 키보드 동작을 비활성화/덮어 쓰기

기본적으로 노드 (DnD)를 이동하고 정렬하는 편리한 방법을 제공하기 위해 TransferHandler가 필요합니다. 그게 전부 야.

미리 감사드립니다.

답변

3

편집 : 나는 늦게, lbalazscs 이미 위의 제안입니다.

당신은 이런 식으로 뭔가를 시도 할 수 있습니다 : 그것은 잘 작동

JTree tree = new JTree(); 
tree.setDragEnabled(true); 
tree.setDropMode(DropMode.ON_OR_INSERT); 
tree.setTransferHandler(new YourTreeTransferHandler()); 
//...... 
Object key = TransferHandler.getCutAction().getValue(Action.NAME); 
System.out.println(key); 
tree.getActionMap().put(key, new AbstractAction() { 
    @Override public void actionPerformed(ActionEvent e) { 
    System.out.println("dummy"); 
    } 
}); 
+0

솔루션은 이미 제안 된이 방법을 더 좋아하지만. 많은 감사합니다! – bioMind

5

당신은 그들과 같이 ActionMap

뭔가를 형성 제거하여 키 기본 바인딩을 제거 할 수 있습니다

ActionMap actionMap = tree.getActionMap(); 
actionMap.remove("cut"); 
actionMap.getParent().remove("cut"); 
actionMap.remove("copy"); 
actionMap.getParent().remove("copy"); 
actionMap.remove("paste"); 
actionMap.getParent().remove("paste"); 
+0

. 고마워요 – bioMind

관련 문제