jas*_*ter 7 java swing jtree drag
我只需要使JTree的叶子可拖动,但以下代码片段使树中的每个节点都可拖动:
tree.setDragEnabled(true);
Run Code Online (Sandbox Code Playgroud)
如何将可拖动元素限制为树节点的特定信息,如属性myNode.isLeaf();
tia jaster
这可以通过改变来完成TransferHandler的JTree返回一个空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;
}
}
});
Run Code Online (Sandbox Code Playgroud)