Java-Implementierung eines Drag-and-Drop-Beispiels
Die Drag-and-Drop-Funktion ist in Swing implementiert. Der Code ist sehr einfach und verfügt über Kommentare. Der laufende Effekt ist wie folgt.
Kopieren Sie den Codecode wie folgt:
Paket com;
java.awt.* importieren;
import java.awt.datatransfer.DataFlavor;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
java.io.File importieren;
java.util.List importieren;
javax.swing.* importieren;
/**
* Das einfachste Java-Drag-and-Drop-Codebeispiel
* @Autor Liu Xianan
* 24. Januar 2013
*/
Die öffentliche Klasse DragTest erweitert JFrame
{
JPanel-Panel; // Panel zum Akzeptieren von Drag & Drop
öffentlicher DragTest()
{
Panel = neues JPanel();
panel.setBackground(Color.YELLOW);
getContentPane().add(panel, BorderLayout.CENTER);
setSize(500, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(400, 200);
setTitle("Das einfachste Drag-and-Drop-Beispiel: Ziehen Sie die Datei unten per Drag-and-Drop (20130124)");
Drag(); // Drag & Drop aktivieren
}
public static void main(String[] args) löst eine Ausnahme aus
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");//Legen Sie den Skin fest
new DragTest().setVisible(true);;
}
public void drag()//Drag-Methode definiert
{
//Panel stellt das Steuerelement dar, das per Drag & Drop verschoben werden soll
neues DropTarget(panel, DnDConstants.ACTION_COPY_OR_MOVE, neuer DropTargetAdapter()
{
@Override
public void drop(DropTargetDropEvent dtde)//Drop-Methode des Adapters neu schreiben
{
versuchen
{
if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor))//Wenn das gezogene Dateiformat unterstützt wird
{
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);//Empfangen Sie die gezogenen Daten
List<File> list = (List<File>) (dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor));
String temp="";
for(Datei Datei:Liste)
temp+=file.getAbsolutePath()+";/n";
JOptionPane.showMessageDialog(null, temp);
dtde.dropComplete(true);//Zeigt an, dass der Drag-and-Drop-Vorgang abgeschlossen wurde
}
anders
{
dtde.rejectDrop(); // Ansonsten die gezogenen Daten ablehnen
}
}
Catch (Ausnahme e)
{
e.printStackTrace();
}
}
});
}
}