treedroptarget.java
来自「java swing 开发代码」· Java 代码 · 共 95 行
JAVA
95 行
// TreeDropTarget.java// A quick DropTarget that's looking for drops from draggable JTrees.//package jswing.ch24;import java.awt.*;import java.awt.dnd.*;import java.awt.datatransfer.*;import javax.swing.*;import javax.swing.tree.*;public class TreeDropTarget implements DropTargetListener { DropTarget target; JTree targetTree; public TreeDropTarget(JTree tree) { targetTree = tree; target = new DropTarget(targetTree, this); } /* * Drop Event Handlers */ private TreeNode getNodeForEvent(DropTargetDragEvent dtde) { Point p = dtde.getLocation(); DropTargetContext dtc = dtde.getDropTargetContext(); JTree tree = (JTree)dtc.getComponent(); TreePath path = tree.getClosestPathForLocation(p.x, p.y); return (TreeNode)path.getLastPathComponent(); } public void dragEnter(DropTargetDragEvent dtde) { TreeNode node = getNodeForEvent(dtde); if (node.isLeaf()) { dtde.rejectDrag(); } else { // start by supporting move operations //dtde.acceptDrag(DnDConstants.ACTION_MOVE); dtde.acceptDrag(dtde.getDropAction()); } } public void dragOver(DropTargetDragEvent dtde) { TreeNode node = getNodeForEvent(dtde); if (node.isLeaf()) { dtde.rejectDrag(); } else { // start by supporting move operations //dtde.acceptDrag(DnDConstants.ACTION_MOVE); dtde.acceptDrag(dtde.getDropAction()); } } public void dragExit(DropTargetEvent dte) { } public void dropActionChanged(DropTargetDragEvent dtde) { } public void drop(DropTargetDropEvent dtde) { Point pt = dtde.getLocation(); DropTargetContext dtc = dtde.getDropTargetContext(); JTree tree = (JTree)dtc.getComponent(); TreePath parentpath = tree.getClosestPathForLocation(pt.x, pt.y); DefaultMutableTreeNode parent = (DefaultMutableTreeNode)parentpath.getLastPathComponent(); if (parent.isLeaf()) { dtde.rejectDrop(); return; } try { Transferable tr = dtde.getTransferable(); DataFlavor[] flavors = tr.getTransferDataFlavors(); for (int i = 0; i < flavors.length; i++) { if (tr.isDataFlavorSupported(flavors[i])) { dtde.acceptDrop(dtde.getDropAction()); TreePath p = (TreePath)tr.getTransferData(flavors[i]); DefaultMutableTreeNode node = (DefaultMutableTreeNode)p.getLastPathComponent(); DefaultTreeModel model = (DefaultTreeModel)tree.getModel(); model.insertNodeInto(node, parent, 0); dtde.dropComplete(true); return; } } dtde.rejectDrop(); } catch (Exception e) { e.printStackTrace(); dtde.rejectDrop(); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?