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

Interfaces Graphiques en Java Discussion :

Listener en Java


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    41
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 41
    Par défaut Listener en Java
    Bonjour,
    Dans le FAQ Java GUI j'ai trouver trois différentes méthodes pour utiliser les listener et je me demande quelle est la meilleure d'entre eux? ou elles sont tous pareil et ça reste un choix pour chaque développeur?
    Personnellement je trouve que la méthode des classes anonymes est la meilleure pour la lisibilité du code mais est ce qu'on peut toujours l'utiliser ou admet-elle parfois des limites?

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Ca dépend des cas, personnellement j'ai tendance à utiliser les AbstractAction car elles se calent bien au niveau archi, s'intègrent facilement au KeyBinding (concepts d'InputMap/ActionMap), permettent de déclencher une action de plusieurs endroits ( genre depuis un bouton aussi bien que depuis le menu ou un toolbar ).
    Mais ceci ne concerne que les actionListener, pour les autres, en général, bah en fait c'est au cas par cas, un coup classe anonyme, un coup classe privée suivant les besoins (assez rarement classe publique).

  3. #3
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    "Class anonyme" je ne l'utilise que quand j'ai un bouton tout seul.
    Sinon c'est généralement des classes privé.
    Et comme au dessus, classe publique assez rare sauf pour les projets en cours ( pour faire plus propre y parait ).

    Finalement, c'est toi qui choisi.
    Après, tu peux factoriser tes listeners entre eux s'il font toujours à peux prêt la même chose. Et là les classes anonymes ne sont pas adaptées

  4. #4
    Membre averti
    Étudiant
    Inscrit en
    Janvier 2010
    Messages
    41
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2010
    Messages : 41
    Par défaut
    merci pour les reponse
    mais je comprends pas c'est quoi la factorisation des listeners?
    la difference entre classe public et privé?
    je suis pas expérimenté en java mais je vois que l'utilisation des classes anonymes laisse le code lisible(pour chaque événement son code) et on a pas besoin de faire des tests sur getSource().
    dans quels cas on peut pas utiliser les classes anonymes?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    la classe anonyme a deux inconvénient:

    1) tu n'a pas le contrôle sur le constructeur, ce qui peux être embetant pour passer certains argument et t'amêne parfois à des bidouillages avec les déclaration "final".
    2) tu ne peux pas y ajouter des méthodes de ton cru que tu appelle dans ton code en dehors de la classe.


    Peut être facilement contourné en donnant un nom à la classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void maMethode(){
         //....
         class MaClassInterne extens  MouseListener{
             public MaClasseInterne(int x){.....}
             //.....
         }
         monBouton.addMouseListener(new MaClassInterne(y));
         //....
    }

  6. #6
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    la difference entre classe public et privé?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class MaClassPublic{
    //...
    private class MaClassPrivee{
    //...
    }
    }
    Les classes privée sont des classes dans des classes public.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mais je comprends pas c'est quoi la factorisation des listeners?
    Imaginons que tu est 2 boutons qui fasse exactement la même chose. Au lieu de créer 2 classes Listeners, tu n'en crées qu'une seule. Tu factorises ton code ( inverse de développer(au sens "étendre") ).
    Pour cela tu crées ta
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class monListener implements ActionListener
    et tu la lies à tes deux boutons.

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

Discussions similaires

  1. Clipboard Listener en java
    Par kivan666 dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 11/08/2011, 02h24
  2. [java] listener sur une forme
    Par Mystiss dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 04/11/2007, 21h41
  3. Probleme Thread, Listener, Random Java
    Par monicaCruZ dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 25/05/2007, 15h56
  4. [Observateur] [Java] JavaBean et Listener
    Par SeeNapse dans le forum Design Patterns
    Réponses: 3
    Dernier message: 15/01/2007, 19h55

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