我为我的 JTree 创建了一个自定义 TransferHandler,因此禁用了复制(仅支持移动)和粘贴(通过检查 canImport 中的 support.isDrop()),但我不知道如何禁用剪切操作。
看来我必须在 exportDone 方法中做出决定,但到目前为止还没有运气。到目前为止,我的方法看起来像这样,但 Drag 和 Cut 都与 Move 操作相关联。
protected void exportDone(JComponent source, Transferable data, int action) {
if(action == TransferHandler.MOVE) {
try {
List<TreePath> list = ((TestTreeList) data.getTransferData(TestTreeList.testTreeListFlavor)).getNodes();
int count = list.size();
for(int i = 0; i < count; i++) {
TestTreeNode node = (TestTreeNode) list.get(i).getLastPathComponent();
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
model.removeNodeFromParent(node);
}
tree.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
} catch (UnsupportedFlavorException e) {
Log.logException(e);
} catch (IOException e) {
Log.logException(e);
}
}
}