Bonjour Junior222
J'ai chargé dans toutes tes classes dans NetBeans.
Bon, il y a de l'idée mais ça patauge dur. C'est normal car c'est difficile au début.
un détail à régler tout de suite : private DataFlavor img = new DataFlavor("image/pnng", null);
il y a un "n" en trop.
A faire :
1.1) le listener de souris DragAndDropListener doit être placé sur le composant ComposantTransferable et non pas sur PanneauComposant
en effet, le panneau ne sert que de support (d'ailleurs, il peut comporter des JButton qui ne doivent pas bouger eux)
1.2) dans le même ordre d'idée, setTransferHandler(new ComposantTransfertHandler()) doit être placé dans le constructeur de ComposantTransferable (il ne concerne pas le PanneauComposant)
1.3) abandonne tout de suite le paintComponent du PanneauComposant :
il faut ajouter les ComposantTransferable sur le panneau (méthode add) et non pas les dessiner.
En effet, une fois dessiné tes composants ne sont plus que des dessins et non pas des objets qu'on "draguer"
(quel jeux de mots j'ai honte)
Pour la suite :
2.1) Tu crées un panneau qui servira à "dropper" ton composant ComposantTransferable.
Appelons ce panneau DropZone
Au début, ce panneau n'a strictement rien de particulier (aucun code spécifique).
2.2) Tu crées un nouveau TransfertHandler qui sera chargé de gérer le drop de ComposantTransferable sur DropZone.
Appelons cette classe DropTransfertHandler.
Les méthodes à surcharger sont :
- public boolean canImport : indiquera, lors du survol de la souris qu'on est bien à un endroit où on peut poser un ComposantTransferable
- public boolean importData : se déclenche lors du drop. C'est ce qui te permets de récupérer les données transférées
2.3) Tu ajoutes setTransferHandler(new DropTransfertHandler()) au constructeur de DropZone.
Tu n'as aucun évènement souris à créer.
Poste ton code quand tu auras avancé.
Partager