# Java > Interfaces Graphiques en Java > AWT/Swing >  mouseClicked et mouseReleased

## hammag

salut,

jai un petit pb avec mouseReleased et mouseClicked,
en fait dans mon application jai plusieurs panels et chaque panel a un MouseListner,
quand je dplace un panel avec la souris et quand je relche le programme excute la fct mouseReleased, pas de pb 
mais aprs, si je clique sur ce dernier panel avec la souris il excute une autre fois la fct mousReleased et non mousClicked
est-ce qu'il y'a qu pour m'aider.

----------


## White Rabbit

Quelles oprations fais-tu dans ton mouseReleased() ?

----------


## Belegkarnil

peut tre a tu coutes-tu deux composant l'un sur l'autre. Ce qui double l'action. non?

Si tu ne vois pas, donne ton code ici.

----------


## hammag

Non, j'ai aucuns composants superposs,

pour mon code, en fait mon programme est un client VoIP, et les panels sont senss reprsenter des poste tlphoniques, si je faire dplacer un panel sur un autre panel quand je lache le tlphone represent par le 1er panel appel le tlphone reprsent par le 2me panel.


```

```

comme vous voyer dans la fonction mouseClicked  il n'y a aucun ligne de code mais si je fait la manip de glisser lacher sur un objet et ensuite juste que je clique sur ce dernier objet et la fct mouseReleased est excuter une autre foi.

----------


## hammag

????

----------


## warwink

Autant ne pas crire du code inutile si tu n'as rien dans MouseClicked

----------


## hammag

effectivement j'ai essay d'enlev mouseClicked mais le message d'erreur suivant apparait :



```

```

panel est la classe pour crer mes panels:

class panel extends JPanel implements MouseListener, MouseMotionListener{

----------


## hammag



----------


## Deadpool

> effectivement j'ai essay d'enlev mouseClicked mais le message d'erreur suivant apparait :
> 
> 
> 
> ```
> 
> ```
> 
> panel est la classe pour crer mes panels:
> ...


Etant donn que tu implmente l'interface MouseListener tu es OBLIGE de fournir une implmentation pour chacune des mthodes de cette interface mme si l'implmentation est vide, c'est pour cette raison que tu ne peux pas enlever la mthode mouseClicked de ta classe.

Sinon le fait que la mthode mouseReleased soit appel quand tu clique sur ton panel n'est pas tonnant dans la mesure o quand tu clique tu relache le bouton non?
En fait les 2 mthodes mouseClicked et mouseReleased sont appels, tu peux le vrifier en faisant afficher un message dans ta mthode mouseClicked.

----------


## hammag

Je rcapitule :

Aprs le lancement de mon application et si je clique sur un panel : les deux fonctions mouseClicked et mouseReleased sont appeles tout les deux en m temps.

Si je bouge un panel et je relche,  la fonction mouseReleased est appele seule (normale),
Mais, aprs si je clique sur ce dernier panel, seulement la fonction mouseReleased est appele, et moi je veux appeler la fonction mouseClicked. 

NB : les autres panels que jai pas touch  reste normale.

----------


## dam_moreyllo

Bonjour,
Je n'en suis pas sur du tout, mais si tu essayais, dans ta fonction MouseReleased, de tester si l'evenement est du a un MOUSE_DRAGGED :


```
if &#40;e.getModifiersEx&#40;&#41; == MOUSE_DRAGGED&#41; &#123;...&#125;
```

Peut etre que a evitera que ton code soit execut quand tu ne fais que cliquer...

----------


## hammag

Problme persiste ...

----------


## BizuR

il me semble que ce qui va distinguer l'appel de MouseReleased  MouseClick sera le temps sur lequel tu resteras appuyer sur la souris, autrement dit, 

Tu appelleras MouseClicked et MouseReleased si tu fais un click simple
Tu appelleras MouseReleased uniquement si tu maintiens le bouton appuy

(bon jusque la, je n'apporte rien de trs nouveau je prsume...)

En aucun cas tu ne pourras viter ces appels ... il faut donc que tu parviennes  n'executer le code que lorsque tu presses longuement le bouton... pour cela, tu peux utiliser une variable (un boolean) propre a ton objet qui va detecter un DRAG d'un CLIC et passer a true qd il faudra effectu le code (lors du DRAG donc)... tu peux donc faire :


```

```



Apres,il existe peut tre des mthodes plus simples ou plus propres mais il me semble avoir dj effectu une opration similaire lors d'un de mes prcdents projets  ::):

----------


## hammag

Ca marche, merci BizuR et tous les autres.

----------


## BizuR

Pense au tag  dans ce cas si possible  ::):

----------

