IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[Listeners] Qu'est ce qui est le plus propre?


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    340
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 340
    Points : 139
    Points
    139
    Par défaut [Listeners] Qu'est ce qui est le plus propre?
    Voila, j'ai un MouseMotionListener qui est branché sur un panel, et donc je me sers pour "récupérer" les coordonnées dans une grille.
    D'un point de vue de propreté du code et de lisibilité, je me demandais ce qui est le mieux :

    Méthode 1 : (ce que j'ai actuellement)
    Ma classe implémente MouseMotionListener, et je fais :
    panelGrille.addMouseMotionListener(this);
    et donc je suis obligé d'ajouter les méthodes MouseMoved et MouseDragged, sachant que cette dernière ne me sers pas.
    Problème : il faut défiler 2500 lignes de ma classe avant de voir le code de MouseMoved

    Méthode 2 :
    J'ai bien envie de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    panelGrille.addMouseMotionListener( 
    	new MouseMotionListener(){
    		public void mouseMoved(MouseEvent e) {
    			// le contenu de ma méthode
    		}
     
    		public void mouseDragged(MouseEvent arg0) {
    			// TODO Auto-generated method stub
    		}
    	}
     
    );
    Qu'est ce qui est le plus propre? le plus efficace? perso, je pencherai vers la 2è solution, parce que ça m'éviterai d'avoir ces 2 méthodes qui se baladent tt en bas de mon code.

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Ta première méthode n'est pas correcte, car tu pourrais appeler directement mouseMoved directement sur ton composant, ce que tu n'as pas le droit.
    Ta deuxième méthode est correcte, simplement si tu veux ajouter le même listener à plusieurs composants, tu es embêté.

    Voici donc une solution:
    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
    public class UnComposant extends JComponent {
     
        private final Controller controller = new Controller();
        private JPanel panelGrille;
     
        //...
     
        public void uneMethod() {
            panelGrille.addMouseListener(controller);
        }
     
        private class Controller extends MouseAdapter {
            @Override
            public void mouseMoved(MouseEvent e) {
                //TODO
            }
        }
    }

  3. #3
    Membre éclairé Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Points : 861
    Points
    861
    Par défaut
    tu peux aussi faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    panelGrille.addMouseMotionListener
    (
        new MouseMotionAdapter()
        {
        	public void mouseMoved(MouseEvent e) {
    			// le contenu de ma méthode
    	}
        }
    );
    Et faire ton MouseMotionAdapter dans une autre classe (une classe qui en dérive), ça t'évite d'avoir une méthode vide.

    (grillé )

Discussions similaires

  1. Qu'est ce qui est le plus rapide
    Par Haku64 dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 13/02/2010, 12h08
  2. Réponses: 5
    Dernier message: 05/06/2007, 13h40
  3. Réponses: 9
    Dernier message: 15/05/2007, 18h01
  4. [C#][Débutant] Qu est ce qui serait le plus judiceux pour faire ca
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/05/2006, 18h57
  5. [Ordinateur] Qu'est ce qui ne va plus ?
    Par portu dans le forum Ordinateurs
    Réponses: 16
    Dernier message: 05/03/2006, 00h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo