Making a Component Draggable : Drag Drop « Swing « Java Tutorial






import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.DragGestureListener;
import java.awt.dnd.DragSource;
import java.awt.dnd.DragSourceDragEvent;
import java.awt.dnd.DragSourceDropEvent;
import java.awt.dnd.DragSourceEvent;
import java.awt.dnd.DragSourceListener;

import javax.swing.JComponent;
import javax.swing.JFrame;

public class Main {
  public static void main(String[] argv) throws Exception {

    JComponent com = new DraggableComponent();

    JFrame f = new JFrame();

    f.add(com);
    f.setSize(300, 300);
    f.setVisible(true);
  }
}

class DraggableComponent extends JComponent implements DragGestureListener, DragSourceListener {
  DragSource dragSource;

  public DraggableComponent() {
    dragSource = new DragSource();
    dragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY_OR_MOVE, this);
  }

  public void dragGestureRecognized(DragGestureEvent evt) {
    Transferable t = new StringSelection("aString");
    dragSource.startDrag(evt, DragSource.DefaultCopyDrop, t, this);
  }

  public void dragEnter(DragSourceDragEvent evt) {
    System.out.println("enters");
  }

  public void dragOver(DragSourceDragEvent evt) {

    System.out.println("over");
  }

  public void dragExit(DragSourceEvent evt) {
    System.out.println("leaves");
  }

  public void dropActionChanged(DragSourceDragEvent evt) {
    System.out.println("changes the drag action between copy or move");
  }

  public void dragDropEnd(DragSourceDropEvent evt) {
    System.out.println("finishes or cancels the drag operation");
  }
}








14.112.Drag Drop
14.112.1.Basic drag and drop
14.112.2.Dragging Text from a JLabelDragging Text from a JLabel
14.112.3.Drag-and-Drop Support for ImagesDrag-and-Drop Support for Images
14.112.4.Drag and drop icons: use an icon property.
14.112.5.implements DragGestureListener, Transferable
14.112.6.Dragging and dropping text between a text area, a list, and a tableDragging and dropping text between a text area, a list, and a table
14.112.7.Drag and drop between JTextArea and JTextField
14.112.8.Transfer both Text and Color between JTextField and JTextArea
14.112.9.Drag and drop between JList and JTextField
14.112.10.DropMode.ON
14.112.11.DropMode.INSERT
14.112.12.DropMode.ON_OR_INSERT
14.112.13.Set tree DropMode to DropMode.USE_SELECTION
14.112.14.Set tree drag mode to DropMode.ON
14.112.15.Set tree drag mode to DropMode.INSERT
14.112.16.Set tree drag mode to DropMode.ON_OR_INSERT
14.112.17.Choose Drop Action
14.112.18.Various drop actions
14.112.19.JTable drag and drop
14.112.20.Create a drag source a drop target and a transferable object.
14.112.21.Making a Component Draggable
14.112.22.Detect a drag initiating gesture in your application
14.112.23.Illustrates cut, copy, paste and drag and drop using three instances of JList
14.112.24.Location sensitive drag and drop
14.112.25.Demonstration of the top-level TransferHandler support on JFrame
14.112.26.Drag-and-Drop customization: drag the foreground color from the first label and drop it as the background color into the second one
14.112.27.Demonstrates how to add copy and drag support to a Swing component with TransferHandler
14.112.28.ScribblePane allows individual PolyLine lines to be selected, cut, copied, pasted, dragged, and dropped
14.112.29.Built-in drag and drop support: utilize a TransferHandler class
14.112.30.DND Drag and drop List