FileDocCategorySizeDatePackage
ColorDrag.javaAPI DocExample2384Sat Jan 24 10:44:38 GMT 2004je3.datatransfer

ColorDrag

public class ColorDrag extends Object
Simple Drag-and-Drop customization: drag the foreground color from the first label and drop it as the background color into the second one. Try it also using the ShowBean program to display a JColorChooser component with dragEnabled=true.

Fields Summary
Constructors Summary
Methods Summary
public static voidmain(java.lang.String[] args)

	// Create two JLabel objects
	final JLabel label1 = new JLabel("Drag here"); 
	JLabel label2 = new JLabel("Drop here");

	// Register TransferHandler objects on them: label1 transfers its 
	// foreground color and label2 transfers its background color.
	label1.setTransferHandler(new TransferHandler("foreground"));
	label2.setTransferHandler(new TransferHandler("background"));

	// Give label1 a foreground color other than the default
	// Make label2 opaque so it displays its background color
	label1.setForeground(new Color(100, 100, 200));
	label2.setOpaque(true);

	// Now look for drag gestures over label1.  When one occurs, 
	// tell the TransferHandler to begin a drag.
	// Exercise: modify this gesture recognition so that the drag doesn't
	// begin until the mouse has moved 4 pixels.  This helps to keep
	// drags distinct from sloppy clicks.  To do this, you'll need both
	// a MouseListener and a MouseMotionListener.
	label1.addMouseMotionListener(new MouseMotionAdapter() {
		public void mouseDragged(MouseEvent e) {
		    TransferHandler handler = label1.getTransferHandler();
		    handler.exportAsDrag(label1, e, TransferHandler.COPY);
		}
	    });

	// Create a window, add the labels, and make it all visible.
	JFrame f = new JFrame("ColorDrag");
	f.getContentPane().setLayout(new FlowLayout());
	f.getContentPane().add(label1);
	f.getContentPane().add(label2);
	f.pack();
	f.setVisible(true);