我需要摆脱用于 JTree 的 TransferHandler 类的标准键盘操作处理程序。JTree 实现了控制节点是否可以删除的访问级别机制。通过使用键盘组合(如 shift-delete)忽略此行为,允许每个用户从 JTree 中删除任何节点。
基本上我需要 TransferHandler 来提供移动和排序节点(DnD)的便捷方式。而已。
提前致谢。
我需要摆脱用于 JTree 的 TransferHandler 类的标准键盘操作处理程序。JTree 实现了控制节点是否可以删除的访问级别机制。通过使用键盘组合(如 shift-delete)忽略此行为,允许每个用户从 JTree 中删除任何节点。
基本上我需要 TransferHandler 来提供移动和排序节点(DnD)的便捷方式。而已。
提前致谢。
您可以通过从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");
编辑:我迟到了,上面已经建议了 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");
}
});