Implémentation Java d'un exemple de glisser-déposer
La fonction glisser-déposer est implémentée dans Swing. Le code est très simple et comporte des commentaires. L'effet exécuté est le suivant :
Copiez le code comme suit :
paquet com;
importer java.awt.* ;
importer java.awt.datatransfer.DataFlavor ;
importer java.awt.dnd.DnDConstants ;
importer java.awt.dnd.DropTarget ;
importer java.awt.dnd.DropTargetAdapter ;
importer java.awt.dnd.DropTargetDropEvent ;
importer java.io.File ;
importer java.util.List ;
importer javax.swing.* ;
/**
* L'exemple de code glisser-déposer Java le plus simple
* @auteur Liu Xianan
* 24 janvier 2013
*/
la classe publique DragTest étend JFrame
{
Panneau JPanel ;//Panel pour accepter le glisser-déposer
public DragTest()
{
panneau = nouveau JPanel();
panel.setBackground(Couleur.JAUNE);
getContentPane().add(panneau, BorderLayout.CENTER);
setTaille(500, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(400, 200);
setTitle("L'exemple de glisser-déposer le plus simple : faites glisser et déposez le fichier ci-dessous (20130124)");
drag();//Activer le glisser-déposer
}
public static void main (String[] args) lève une exception
{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");//Définir le skin
new DragTest().setVisible(true);;
}
public void drag()//Méthode Drag définie
{
//Le panneau représente le contrôle à glisser-déposer
nouveau DropTarget (panneau, DnDConstants.ACTION_COPY_OR_MOVE, nouveau DropTargetAdapter()
{
@Outrepasser
public void drop(DropTargetDropEvent dtde)//Réécrire la méthode drop de l'adaptateur
{
essayer
{
if (dtde.isDataFlavorSupported(DataFlavor.javaFileListFlavor))//Si le format de fichier déplacé est pris en charge
{
dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);//Recevoir les données glissées
List<File> list = (List<File>) (dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor));
Chaîne temp="";
pour (fichier fichier : liste)
temp+=file.getAbsolutePath()+";/n";
JOptionPane.showMessageDialog(null, temp);
dtde.dropComplete(true);//Indique que l'opération de glisser-déposer est terminée
}
autre
{
dtde.rejectDrop(); // Sinon, rejette les données déplacées
}
}
attraper (exception e)
{
e.printStackTrace();
}
}
});
}
}