1

JTreeに使用するTransferHandlerクラスの標準キーボードアクションハンドラーを削除する必要があります。JTreeは、ノードが削除されるかどうかを制御するアクセスレベルのメカニズムを実装します。この動作は、Shift-Deleteなどのキーボードの組み合わせを使用することで無視され、各ユーザーはJTreeから任意のノードを削除できます。

基本的に、ノード(DnD)を移動およびソートする便利な方法を提供するためにTransferHandlerが必要です。それでおしまい。

前もって感謝します。

4

2 に答える 2

5

アクションマップからキーのデフォルトバインディングを削除することで、それらを削除できます。

このようなもの:

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 に答える