# Java > Interfaces Graphiques en Java > AWT/Swing >  connaitre le dplacement ralis lors d'un mouseDragged()

## Invit

Bonjour  tous !  ::D: 

Voil quelques temps dj que je galre avec la mthode mouseDragged.  ::?: 
Je souhaite en effet obtenir le dplacement ralis par la souris lors d'un drag'n'drop.
Par exemple, si l'on est en (5,5) souris clique et que l'on se dplace en (5,6), un vnement mouseDragged se produit et j'aimerais obtenir de cet vnement l'information comme quoi la souris s'est dplace de +1 pixel sur y et de 0 sur x.

Malheureusement, selon l'api, il est seulement possible d'obtenir le point "d'arrive" de l'vnement et non le dplacement occasionn par celui-ci  ::cry::  et encore moins son point "d'origine" (qui permettrait de dduire la translation...)

Existe-t'il une solution ?

Merci d'avance !
Axel

----------


## sinok

Bonsoir

Le mouseDragged de dclenche de faon quasi continuelle pendant le dplacement.

La esule chose que tu as  faire c'est de stocker le dernier point donn par le mouseDragged et de l'utiliser pou calculer le dplacement effectu lors de mouseDragged suivant

----------


## Invit

Merci pour ta rponse !

J'ai effectivement essay cette solution, malheureusement elle comporte un gros problme :
 partir du deuxime dplacement, aucun problme, mais au premier dplacement, les coordonnes de dpart sont null (ou  une valeur affecte  l'initialisation). Il faut donc attendre le deuxime dplacement pour obtenir une valeur correcte.
Mais le plus gros problme est qu'au second drag'n'drop, la valeur n'est pas rinitialise, et cela entraine d'tranges phnomnes d'un point de vue graphique...
L'idal serait de rinitialiser la valeur sur l'vnement mouseClicked, mais c'est impossible car il s'agit d'une mthode de la classe MouseListener alors que mouseDragged appartient  MouseMotionListener, ce qui entrane un problme de porte de la variable.  ::?: 

Mais je passe srement  ct de quelque chose, car il doit forcment y avoir une solution !

----------


## sinok

Bah en fait je vois pas o est le fait d'avoir  implmenter deux interface dans une seule classe...
Donc ta classe doit implmenter MouseListener  et MouseMotionListener.
Puis tu fais en sorte de stocker la position dans un attribut de ta classe.

Je ne vois pas vraiment o est le problme...

Et puis plutt que mouseClicked il faut utiliser mousePressed



```

```

----------


## Invit

Ah merci, c'est parfait !  ::king:: 
En fait je n'avais tout simplement pas pens  cette faon de faire. Jusque l j'appelais addMouseListener(...) et addMouseMotionListener(...) sur l'objet depuis une autre classe...

Juste par curiosit, y a-t'il des cas o l'on doit utiliser de prfrence les add... plutt que les implements ?

----------


## Uther

Je suis pas sur de comprendre ta question.

Il faut toujours utiliser les add...Listener(...) avec comme paramtre des objets qui implmentent les Listener correspondants. Sinok ne l'a pas dtaill a dans l'exemple, dans son l'exemple mais ils sont bien sur ncessaires.

----------


## Invit

Avec l'exemple de Sinok, je crer (depuis une autre classe) une instance de la classe DrDop :
DrDop truc = new DrDop();

tu dis que mme si DrDop implmente les 2 interfaces, il faut rajouter quelque chose ?

Edit :
Ah c'est bon, j'ai compris, il fallait ajouter add...Listener(this) dans le constructeur de la classe DrDop.
J'ai tout ce dont j'avais besoin, merci encore pour votre aide !  ::king:: 
A bientt.
Axel

----------

