gpt4 book ai didi

Java 禁用 JTree/TransferHandler 的剪切操作

转载 作者:行者123 更新时间:2023-12-01 05:42:13 25 4
gpt4 key购买 nike

我为我的 JTree 创建了一个自定义 TransferHandler,因此禁用了复制(仅支持移动)和粘贴(通过检查 canImport 中的 support.isDrop()),但我不知道如何禁用剪切操作。

看起来我必须在exportDone方法中做出决定,但到目前为止还没有运气。到目前为止,我的方法看起来像这样,但“拖动”和“剪切”都与“移动”操作相关联。

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);
}
}
}

最佳答案

您还可以通过从 ActionMap 中删除操作来从用户界面禁用剪切、复制、粘贴。

JTree tree = new JTree();
...
tree.getActionMap().put( "cut", null );
tree.getActionMap().put( "copy", null );
tree.getActionMap().put( "paste", null );

这会阻止某人使用此树作为源进行复制、剪切或粘贴。

关于Java 禁用 JTree/TransferHandler 的剪切操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6824247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com