Code de l'interface MouseListener [Résolu/Fermé]

Signaler
Messages postés
473
Date d'inscription
vendredi 6 décembre 2013
Statut
Membre
Dernière intervention
1 novembre 2018
-
Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021
-
Bonjour, bonsoir, je voudrais le code de l'interface MouseListener,et non la classe qui l'implémente, juste pour remplir ma curiosité et compléter mon apprentissage.
Merci de vos future réponses.
Skymer
"On à jamais rien, sans rien !"
"Ne jamais abandonnez"

2 réponses

Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021
2 797
Bonjour,

Comme tu l'as indiqué MouseListener est une interface, elle ne définit donc pas de code, chacun mets ce qu'il veut.
Messages postés
473
Date d'inscription
vendredi 6 décembre 2013
Statut
Membre
Dernière intervention
1 novembre 2018
64
Bon, je vais passer pour un boulet, en vrai ma question était: Quand on implémente MouseListener, et par exemple on redéfini mouseclicked, a quoi correspond MouseEvent, est ce une variable ? ..
Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021
2 797
MouseEvent est un objet qui va t'être donné quand un événement souris va se produire. Selon le type d'événement en jeu tu vas rentrer dans l'une ou l'autre des méthodes du MouseListener avec cet objet.

Voici la documentation de MouseEvent :
https://docs.oracle.com/javase/8/docs/api/java/awt/event/MouseEvent.html

Par exemple tu peux récupérer la position de la souris (X et Y), le bouton cliqué...
Messages postés
473
Date d'inscription
vendredi 6 décembre 2013
Statut
Membre
Dernière intervention
1 novembre 2018
64 >
Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021

Merci, je sais que je te poses bcp de questions, mais dites toi que je suis intelligent, je sais que l'on peut récupérer X et Y?
Messages postés
473
Date d'inscription
vendredi 6 décembre 2013
Statut
Membre
Dernière intervention
1 novembre 2018
64
Et aussi, exuse du double message, mais quelle est ça liaison avec note interface MouseListener ?
Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021
2 797
Si tu veux récupérer la position X,Y il suffit d'utiliser les méthodes du MouseEvent que tu as récupéré. Exemple :

public void mouseClicked(MouseEvent e) {
    int x = e.getX();
    int y = e.getY();
    System.out.println("Clic en "+x+","+y);
}
Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021
2 797
Un exemple complet que tu vas pouvoir tester :

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;

public class Test {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.addMouseListener(new DisplayMouseListener());
        frame.setSize(200, 200);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

class DisplayMouseListener implements MouseListener {

    public void mouseClicked(MouseEvent e) {
        System.out.println("mouseClicked\t" + e);
    }

    public void mousePressed(MouseEvent e) {
        System.out.println("mousePressed\t" + e);
    }

    public void mouseReleased(MouseEvent e) {
        System.out.println("mouseReleased\t" + e);
    }

    public void mouseEntered(MouseEvent e) {
        System.out.println("mouseEntered\t" + e);
    }

    public void mouseExited(MouseEvent e) {
        System.out.println("mouseExited\t" + e);
    }
}
Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021
2 797
Ce qu'il ne faut pas oublier c'est que tout part de là :
frame.addMouseListener(new DisplayMouseListener());

La méthode addMouseListener(MouseListener) est définie par la classe Component (dont dérive tous les objets Swing). Cette méthode va ajouter l'implémentation de ton MouseListener à une liste gérée par le Component. Quand il y a un événement souris sur le Component c'est lui qui créé l'objet MouseEvent et appelle chaque MouseListener de sa liste pour appeler la bonne méthode en lui passant en paramètre l'objet MouseEvent qu'il vient de créer.

Remarque : on n'est plus vraiment dans de la programmation objet mais plutôt dans de la programmation événementielle.
Messages postés
473
Date d'inscription
vendredi 6 décembre 2013
Statut
Membre
Dernière intervention
1 novembre 2018
64 >
Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021

C'est marrant que tu me résume le chapitre que je viens d'apprendre ;P tu peux le dire si je formule mal mes questions, mais j'ai compris, donc MouseEvent est un objet invoqué lors d'une action sur le Component, et donc ? Quelle es le rapport à ses deux là (MouseEvent et MouseListener), ce sont des objets à part ou ils sont liés pas l'héritage ou autre ?

Aussi dis moi, tu es programmeur passionné à temps partiel ou professionnel ?
Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021
2 797
Le rapport entre MouseEvent et MouseListener, c'est que MouseEvent est (comme son nom l'indique) un événement lié à la souris et que le MouseListener c'est l'intercepteur de cet événement et donc la définition de l'action à effectuer lorsque cet événement se produit.

Le MouseEvent est l'action, le MouseListener la réaction.

Si je cliques sur un bouton, j'appelle tous les objets MouseListener définit par ce bouton avec la méthode mouseClicked (puisque j'ai fait un clic) en passant en paramètre de la méthode l'objet MouseEvent correspondant au clic (position X,Y du clic, bouton gauche ou droite de la souris, etc.) ensuite le MouseListener récupère ses informations pour savoir comment faire l'action parce que par exemple un clic gauche ou un clic droit généralement ça ne fait pas la même chose...
Messages postés
473
Date d'inscription
vendredi 6 décembre 2013
Statut
Membre
Dernière intervention
1 novembre 2018
64 >
Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021

Donc ce sont deux objets à part entière.
Messages postés
16251
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 février 2021
2 797 >
Messages postés
473
Date d'inscription
vendredi 6 décembre 2013
Statut
Membre
Dernière intervention
1 novembre 2018

Bien sûr que ce sont deux objets distincts, puisque MouseListener est une interface il n'y a aucune contrainte de relation d'héritage imposée avec n'importe quelle autre classe.