import java.awt.dnd.DragSource; import java.awt.dnd.DnDConstants; import java.awt.dnd.DragGestureEvent; import java.awt.dnd.DragGestureListener; import java.awt.*; public class SourcePanel extends Panel { private final MyDragGestureListener dragGestureListener = new MyDragGestureListener(); public SourcePanel() { setPreferredSize(new Dimension(200, 200)); DragSource defaultDragSource = DragSource.getDefaultDragSource(); defaultDragSource.createDefaultDragGestureRecognizer(this, DnDConstants.ACTION_COPY_OR_MOVE, dragGestureListener); setBackground(Color.RED); } private class MyDragGestureListener implements DragGestureListener { public void dragGestureRecognized(DragGestureEvent dge) { dge.startDrag(null, new MyTransferable()); } } }