treedragsource.java
来自「java swing 开发代码」· Java 代码 · 共 77 行
JAVA
77 行
// TreeDragSource.java// A drag source wrapper for a JTree. This class can be used to make// a rearrangeable DnD tree with the TransferableTreeNode class as the// transfer data type.//package jswing.ch24;import java.awt.dnd.*;import javax.swing.*;import javax.swing.tree.*;public class TreeDragSource implements DragSourceListener, DragGestureListener { DragSource source; DragGestureRecognizer recognizer; TransferableTreeNode transferable; DefaultMutableTreeNode oldNode; JTree sourceTree; public TreeDragSource(JTree tree, int actions) { sourceTree = tree; source = new DragSource(); recognizer = source.createDefaultDragGestureRecognizer( sourceTree, actions, this); } /* * Drag Gesture Handler */ public void dragGestureRecognized(DragGestureEvent dge) { TreePath path = sourceTree.getSelectionPath(); if ((path == null) || (path.getPathCount() <= 1)) { // We can't move the root node or an empty selection return; } oldNode = (DefaultMutableTreeNode)path.getLastPathComponent(); transferable = new TransferableTreeNode(path); source.startDrag(dge, DragSource.DefaultMoveNoDrop, transferable, this); // If you support dropping the node anywhere, you should probably // start with a valid move cursor: //source.startDrag(dge, DragSource.DefaultMoveDrop, transferable, this); } /* * Drag Event Handlers */ public void dragEnter(DragSourceDragEvent dsde) { } public void dragExit(DragSourceEvent dse) { } public void dragOver(DragSourceDragEvent dsde) { } public void dropActionChanged(DragSourceDragEvent dsde) { System.out.println("Action: " + dsde.getDropAction()); System.out.println("Target Action: " + dsde.getTargetActions()); System.out.println("User Action: " + dsde.getUserAction()); } public void dragDropEnd(DragSourceDropEvent dsde) { /* * to support move or copy, we have to check which occurred: */ System.out.println("Drop Action: " + dsde.getDropAction()); if (dsde.getDropSuccess() && (dsde.getDropAction() == DnDConstants.ACTION_MOVE)) { ((DefaultTreeModel)sourceTree.getModel()).removeNodeFromParent(oldNode); } /* * to support move only... if (dsde.getDropSuccess()) { ((DefaultTreeModel)sourceTree.getModel()).removeNodeFromParent(oldNode); } */ } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?