# Java > Interfaces Graphiques en Java > AWT/Swing >  Drag and Drop avec un JPanel

## scorplayer

Bonjour  tous, 

Je souhaiterai savoir si la fonction Drop est possible dans un JPanel. Le but tant de glisser un objet d'une liste dans une autre fentre compose d'un JPanel. 
Pouvez vous me donnez des indications pour raliser cette fonction (j'ai lu les tutoriels de Mickael Baron et Romain Guy)?

Merci

----------


## yciabaud

Tous les JComponent ont les methodes setTransferHandler etc... Ils peuvent donc tous recevoir du drag and drop.

----------


## scorplayer

Tu saurais pas comment faire pour le transfert d'un objet compos de 4 "int" ?

----------


## yciabaud

Tu peux transfrer ce que tu veux, regarde ce tuto: http://mbaron.developpez.com/javase/dnddt/

Tu va crer un Transferable et mette ton objet  l'interieur, ensuite tu implmente les interface de Drag sur l'objet source et de drop sur ton JPanel. Et voila! 

Le drag and drop n'est pas facile  aborder mais en fait a n'est pas si compliqu.

----------


## scorplayer

J'ai dj lu ce tuto plusieurs fois. Ce que je ne comprends pas c'est comment le Transferable va grer le transfert de donnes (en gros je ne comprends pas ce que fait la class TransferableExample page 20).

Pour l'implmentation du Drag es-ce qu'un "jTree.setDragEnabled(true)" suffit?

Comment s'y prendre pour l'implmentation du Drop de mon JPanel?

Merci de ton aide

----------


## scorplayer

> Ce que je ne comprends pas c'est comment le Transferable va grer le transfert de donnes


Du coup je ne vois pas comment adapter cette exemple  mon cas.

----------


## yciabaud

> J'ai dj lu ce tuto plusieurs fois. Ce que je ne comprends pas c'est comment le Transferable va grer le transfert de donnes (en gros je ne comprends pas ce que fait la class TransferableExample page 20).
> 
> Pour l'implmentation du Drag es-ce qu'un "jTree.setDragEnabled(true)" suffit?
> 
> Comment s'y prendre pour l'implmentation du Drop de mon JPanel?
> 
> Merci de ton aide


setDragEnabled  true va te grer le drag seul, mais par contre les donnes transfres ne seront que le texte du noeud (ou des noeuds) slectionn(s). Si a te suffit, tu peux le faire et implmenter un TransferHandler du flavor texte pour ton jpanel.

Si tu veux changer de vrais objet javas, il faut crer un transfrable avec ces objets  l'intrieur puis implmenter les bonnes interfaces...

----------


## scorplayer

Merci mais j'ai rsolu le problme. ::yaisse2:: 

En fait, je n'tais pas oblig de faire un transfert de fichier. Du coup, il fallait simplement savoir quel objet tait slectionn dans un arbre pour faire l'action dsire au moment du "lcher".

J'ai quand mme galr pour paramtrer la source (un JPanel compos d'un  JTree) et la cible (JPanel). Voila le rsultat de mon travail pour ceux qui sont intresss :

Pour que la source soit apte  "transfrer" des donnes  (ce n'est pas vraiment un transfre d'objet mais on va vouloir dtecter quel objet est slectionn dans l'arbre pour effectuer une action particulire) :


```

```

Pour que la cible soit apte  "recevoir" des donnes (ce n'est pas une rception mais une action ralise selon l'objet slectionn dans l'arbre) :


```
new DropTarget(this,new CarteDropTargetListener(this,Fdessin));
```

Ces codes sont  ajouter respectivement dans les classes source et cible.
"this" est ici un JPanel. Nous n'avons plus qu' crer la classe CarteDropTargetListener avec les arguments dont nous aurons besoin pour la dtection de l'objet slectionn dans l'arbre et l'action que l'on dsire faire (ici un JPanel et un objet dessin compos du JTree):


```

```

La variable SelectedObject de la classe Dessin contient le nom de l'objet slectionn dans l'arbre (voir le code plus haut concernant la source).

J'ai fait le maximum pour que mes explications soient le plus comprhensible possible. En esprant que a aidera certain... ::P:

----------

