⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dragtargettree.java

📁 在JAVA中如何实现两棵树之间的拖拽功能.
💻 JAVA
字号:
package twotreedrag;

import javax.swing.JTree;
import java.awt.dnd.DropTargetListener;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTarget;
import java.io.*;
import java.io.*;
import javax.swing.tree.DefaultMutableTreeNode;


/**
 *

 Title: JTree之间的拖拽中的DragTargetTree


 *
 Description:通过向从“源树”中拖拽结点在目标树中重新构造一棵树,实现JTree之间的拖拽单向拖拽,这个类是“目的树”


 * @author awaysrain(绝对零度)
 * @version 1.0
 */



public class DragTargetTree extends JTree implements DropTargetListener {
    /**
     * Construct the target tree
     */
    public DragTargetTree() {
        super();
        DropTarget dropTarget = new DropTarget(this,
                                               java.awt.dnd.DnDConstants.
                                               ACTION_COPY_OR_MOVE, this);
    }

    /**
     * Construct the target tree
     * @param treeNode DefaultMutableTreeNode
     */
    public DragTargetTree(DefaultMutableTreeNode treeNode) {
        super(treeNode);
        DropTarget dropTarget = new DropTarget(this,
                                               java.awt.dnd.DnDConstants.
                                               ACTION_COPY_OR_MOVE, this);
    }


    /**
     * dragEnter
     *
     * @param dtde DropTargetDragEvent
     */
    public void dragEnter(DropTargetDragEvent dtde) {
    }


    /**
     * dragOver
     *
     * @param dtde DropTargetDragEvent
     */
    public void dragOver(DropTargetDragEvent dtde) {
    }


    /**
     * dropActionChanged
     *
     * @param dtde DropTargetDragEvent
     */
    public void dropActionChanged(DropTargetDragEvent dtde) {
    }


    /**
     * drop
     *
     * @param dtde DropTargetDropEvent
     */
    public void drop(DropTargetDropEvent dtde) {
        dtde.acceptDrop(java.awt.dnd.DnDConstants.ACTION_COPY); //accept drop
        java.awt.Point ap = dtde.getLocation(); // get event point
        int x = (int) ap.getX();
        int y = (int) ap.getY();
        javax.swing.tree.DefaultMutableTreeNode parnode;
        javax.swing.tree.TreePath tp = this.getPathForLocation(x, y);
        if (tp != null) {
            try {
//get drop tree node with treepath
                javax.swing.tree.DefaultMutableTreeNode no1 =
                        (javax.swing.tree.DefaultMutableTreeNode) tp.
                        getLastPathComponent();
                parnode = no1;
                int index = parnode.getChildCount();
// get drop tree mode
                javax.swing.tree.DefaultTreeModel tm =
                        (javax.swing.tree.DefaultTreeModel)this.getModel();
                javax.swing.tree.DefaultMutableTreeNode node2 =
                        new javax.swing.tree.DefaultMutableTreeNode();
                node2 = readNode();
                tm.insertNodeInto(node2, parnode, index);
            } catch (java.lang.Exception e) {
                System.out.println(e.toString());
            }
        }

    }


    /**
     * dragExit
     *
     * @param dte DropTargetEvent
     */
    public void dragExit(DropTargetEvent dte) {
    }


    /**
     *
     * read the node
     * @return DefaultMutableTreeNode
     */
    private DefaultMutableTreeNode readNode() {

        FileInputStream objfile = null;
        try {
            objfile = new java.io.FileInputStream("DragNode.OBJ");
            ObjectInputStream q = new ObjectInputStream(objfile);
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) q.readObject();
            return node;
        } catch (Exception ex) {
            return null;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -