bonjour
je voudrais savoir si j ai besoin d utiliser 2 methodes de la class mouseListener est ce que je suis obliger d ecrire les profils des autres methodes si oui pourquoi ?
bonjour
je voudrais savoir si j ai besoin d utiliser 2 methodes de la class mouseListener est ce que je suis obliger d ecrire les profils des autres methodes si oui pourquoi ?
Non, si tu implémentes MouseListener comme ceci :
Tu n'as besoin de définir que les méthodes dont tu as besoin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part public class MaClasse implements MouseListener
Désolé mais tu fais erreur. MouseLisener est une interface, on doit donc implémenter toutes les méthodes.Envoyé par muldoon
une alternatiive est d'utiliser la classe abstraite MouseAdapter. Seule les classes abstraite n'ont pas l'obligation d'implémenter les méthode d'une interface.
Il y plusieurs facon faire, en voici quelque une:
Le danger avec la class MousAdapter est de faire une erreur dans sa signature, le compliateur ne signalera pas d'erreur et l'evenement ne se produit pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 public calss MaClasse extends JFrame{ // inner class class clickEvent extends MouseAdapter{ pulic void mouseClicked(MouseEvent e) { // traiter l'evenment click } } // anonyme MouseAdapter clickEvent = new MouseAdapter(){ pulic void mouseClicked(MouseEvent e) { // traiter l'evenment click } }; /*constructor*/ public MaClasse(){ //ajout des Events addMouseListener(new ClickEvent()); // ou addMouseListener(clickEvent); // création d'un event anonyme addMouseListenr(new MouseAdapter(){ pulic void MouseClicked(MouseEvent e) { // ligne 1 erreur intentionnel // traiter l'evenment click } }); } }
Voir la ligne 1 :
la vraie signature est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part public void MouseClicked(MouseEvent e) // ne sera pas appelé
Ce genre d'erreur est évité avec les interfaces.
Code : Sélectionner tout - Visualiser dans une fenêtre à part public void mouseClicked(MouseEvent e) //
Pour eviter ce genre de probleme lors d'une surcharge d'une methode, il convient d'utiliser (depuis Java 5), l'annotation @Override qui declenche une erreur a la compilation s'il n'y a aucune methode mere du meme nom :
Declenchera une erreur a la compilation puisqu'il n'existe pas de methode MouseClicked() dans MouseAdapter. Ceci passera par contre sans probleme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 MouseAdapter clickEvent = new MouseAdapter(){ @Override public void MouseClicked(MouseEvent e) { ... } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 MouseAdapter clickEvent = new MouseAdapter(){ @Override public void mouseClicked(MouseEvent e) { ... } }
Merci de penser au tagquand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez mon blog sur Développez.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook
Partager