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

avec Java Discussion :

Pallier l'héritage multiple


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 99
    Points : 66
    Points
    66
    Par défaut Pallier l'héritage multiple
    Bonjour,

    je me trimbale un pavé de code de classe en classe depuis tout à l'heure et j'arrive pas à trouver comment me débrouiller pour l'écrire une bonne fois pour toute.

    J'ai besoin de détecter les clics sur toutes sortes de composants Swing. Cependant, de nombreux composants n'ont pas la méthode addActionListener. Du coup, je mets un mouseListener sur l'objet, puis j'écris dans mes classes le code suivant :

    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
    36
    37
    38
    39
    40
     
        public void mouseClicked(MouseEvent e) {}
        public void mouseReleased(MouseEvent e) {}
        public void mouseEntered(MouseEvent e) {}
        public void mouseExited(MouseEvent e) {}
     
        public void mousePressed(MouseEvent e) {
            ActionEvent event = new ActionEvent(this,ActionEvent.ACTION_PERFORMED,"ActionPerformed");
            fireActionPerformed(event);
        }
     
        /**
         * Adds an <code>ActionListener</code> to the button.
         * @param l the <code>ActionListener</code> to be added
         */
        public void addActionListener(ActionListener l) {
            listenerList.add(ActionListener.class, l);
        }
     
        /**
         * Removes an <code>ActionListener</code> from the button.
         * @param l the listener to be removed
         */
        public void removeActionListener(ActionListener l) {
    	listenerList.remove(ActionListener.class, l);
        }
     
        /**
         * Notifies all listeners that have registered interest for
         * notification on this event type.  The event instance
         * is lazily created using the <code>event</code>
         * parameter.
         *
         * @param event  the <code>ActionEvent</code> object
         */
        public void fireActionPerformed(ActionEvent event) {
            for(ActionListener l : listenerList.getListeners(ActionListener.class)) {
                l.actionPerformed(event);
            }
        }
    Mais est-ce qu'il y aurait moyen d'écrire ça qq part sans le répéter?
    L'idéal serait de faire un héritage multiple, mais pas possible en Java.
    Une interface? Sauf que ces c*** refusent que l'on développe leurs méthodes.
    Y a-t-il une parade?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ou est le problème d'écrire "une seule fois" un actionListener qui fait le boulot? C'est pas super dans l'esprit swing mais ça reste conventionnel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class MouseActionListener implements MouseListener {
        Action action;
        // méthodes de mouselistener qui transfèrent à "Action"
        public MouseActionListener(Action action){
            this.action=action;
        }
    }
    Et dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    myAction = ....;
    component.addMouseListener(new MouseActionListener(myAction));

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 99
    Points : 66
    Points
    66
    Par défaut
    Ah ben oui...
    en fait, c'est bien ça qu'il faudrait que je fasse.
    Merci

    (comme quoi des fois... pas chercher trop compliqué ! ^^)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. composants C++ Builder et héritage multiple
    Par vedrfolnir dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/10/2005, 10h04
  2. [heritage][conception]héritage multiple en java!
    Par soulhouf dans le forum Langage
    Réponses: 9
    Dernier message: 25/08/2005, 20h03
  3. L'héritage multiple est-il possible en Delphi ?
    Par SchpatziBreizh dans le forum Langage
    Réponses: 8
    Dernier message: 30/06/2005, 11h30
  4. utilisez vous l'héritage multiple ?
    Par vodosiossbaas dans le forum C++
    Réponses: 8
    Dernier message: 13/06/2005, 20h25
  5. [XML Schemas]héritage multiple
    Par nicolas_jf dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 10/06/2003, 12h55

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