Questo listener ha un utilizzo molto semplice. Una volta creata la finestra su cui si vuole poter fare il drop, ad esempio identificata dall'oggetto myWnd, si crea l'oggetto MyDropTarget e si associa alla finestra con le seguenti linee di codice:
dt.setComponent(myWnd);
dt.setActive(true);
import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.io.File; import java.util.List;class MyDropTarget extends DropTarget { MyDropTarget() { // some init... }
public void dragEnter(DropTargetDragEvent de) { if (de == null || !de.isDataFlavorSupported( DataFlavor.javaFileListFlavor)) { de.rejectDrag(); return; } de.acceptDrag(de.getDropAction()); } public void drop(DropTargetDropEvent de) { try { if (de == null || !de.isDataFlavorSupported( DataFlavor.javaFileListFlavor)) { de.rejectDrop(); return; } de.acceptDrop(de.getDropAction()); Transferable dt = de.getTransferable(); if (dt == null) { de.rejectDrop(); return; } List l = (List) dt.getTransferData( DataFlavor.javaFileListFlavor); de.getDropTargetContext().dropComplete(true); // do something with the file list...
} catch (Exception e) { e.printStackTrace(); de.rejectDrop(); } } }
Ultimi commenti