作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我只需要使 JTree 的叶子可拖动,但以下代码片段使树中的每个节点都可拖动:
tree.setDragEnabled(true);
如何将可拖动元素限制为树节点的特定信息,如属性 myNode.isLeaf();
蒂亚杰斯特
最佳答案
这可以通过更改 JTree
的 TransferHandler
以在非叶节点上返回空 Transferable
来完成。
这是一个简单的例子:
JTree tree = new JTree();
tree.setDragEnabled(true);
tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.setTransferHandler(new TransferHandler(null) {
public int getSourceActions(JComponent c) {
return MOVE;
}
protected Transferable createTransferable(JComponent c) {
JTree tree = (JTree) c;
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getSelectionPath().getLastPathComponent();
if (node.isLeaf()) {
// TODO create the Transferable instance for the selected leaf
} else {
return null;
}
}
});
关于java - JTree 只使树叶可拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6827963/
我遇到过这个很好的例子 here构建可折叠的动画缩进树使用 d3。 当 mouseover 事件发生在叶节点上时,我如何添加一个弹出窗口?弹出窗口应出现在实际节点旁边。 最佳答案 通过将 .on 事件
我是一名优秀的程序员,十分优秀!