1

我需要摆脱用于 JTree 的 TransferHandler 类的标准键盘操作处理程序。JTree 实现了控制节点是否可以删除的访问级别机制。通过使用键盘组合(如 shift-delete)忽略此行为,允许每个用户从 JTree 中删除任何节点。

基本上我需要 TransferHandler 来提供移动和排序节点(DnD)的便捷方式。而已。

提前致谢。

4

2 回答 2

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");
于 2013-01-02T10:06:30.557 回答
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");
  }
});
于 2013-01-02T10:12:14.950 回答