1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
import java.awt.BorderLayout;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import javax.swing.DropMode;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JTree;
import javax.swing.TransferHandler;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
public class Main extends JFrame {
public Main() {
DefaultMutableTreeNode node = new DefaultMutableTreeNode("1");
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("2");
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("3");
DefaultMutableTreeNode node3 = new DefaultMutableTreeNode("4");
DefaultMutableTreeNode node4 = new DefaultMutableTreeNode("5");
DefaultMutableTreeNode node5 = new DefaultMutableTreeNode("6");
node.add(node1);
node.add(node2);
node1.add(node3);
node1.add(node4);
node2.add(node5);
JTree tree = new JTree(node);
tree.setDragEnabled(true);
tree.setTransferHandler(new MyTransferHandler());
tree.setDropMode(DropMode.ON_OR_INSERT);
add(tree, BorderLayout.CENTER);
JTextField fiels = new JTextField();
fiels.setDragEnabled(true);
add(fiels, BorderLayout.NORTH);
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new Main();
}
class MyTransferHandler extends TransferHandler {
public boolean importData(JComponent comp, Transferable t) {
return false;
}
public boolean importData(TransferSupport support) {
if (support.isDataFlavorSupported(DataFlavor.stringFlavor)) {
JTree.DropLocation dl = (JTree.DropLocation) support
.getDropLocation();
TreePath path = dl.getPath();
int childIndex = dl.getChildIndex();
Transferable trans = support.getTransferable();
String data;
JTree tree = ((JTree) support.getComponent());
DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModel();
try {
data = (String) trans
.getTransferData(DataFlavor.stringFlavor);
} catch (UnsupportedFlavorException e) {
return false;
} catch (IOException e) {
return false;
}
if (childIndex == -1) {
childIndex = treeModel.getChildCount(path
.getLastPathComponent());
}
DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(
data);
DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) path
.getLastPathComponent();
treeModel.insertNodeInto(newNode, parentNode, childIndex);
TreePath newPath = path.pathByAddingChild(newNode);
tree.makeVisible(newPath);
tree.scrollRectToVisible(tree.getPathBounds(newPath));
return true;
}
return false;
}
public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {
return false;
}
public boolean canImport(TransferSupport support) {
if (support.isDataFlavorSupported(DataFlavor.stringFlavor)) {
return true;
}
return false;
}
}
} |
Partager