我需要摆脱我用于JTree的TransferHandler类的标准键盘操作处理程序。 JTree实现了访问级机制,该机制控制是否可以删除节点。使用shift-delete等键盘组合可以忽略此行为,从而允许每个用户从JTree中删除任何节点。
基本上我需要TransferHandler来提供移动和排序节点(DnD)的便捷方式。就是这样。
提前致谢。
答案 0 :(得分: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");
答案 1 :(得分: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");
}
});