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 :

[ActionListener] performances commodités


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut [ActionListener] performances commodités
    Bonjour,

    Je voudrai votre avis sur la façon la plus performante d'utiliser un Actionlistener.

    J'en connais trois :
    *création en class interne
    *création à la volé : MonBouton.addListener(new ActionListener(){public void actionPerformed(event e){//action}});
    *et faire une implémentation.

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Je pense que les trois méthodes sont équivalentes coté performances , par contre personellement j'utilise la troisième , je la trouve la plus claire et propre, mais ce n'est que mon avis


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    Salut,

    merci de ta réponse. Moi je prefere la deuxième méthode....

  4. #4
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Citation Envoyé par philippe13
    Bonjour,

    Je voudrai votre avis sur la façon la plus performante d'utiliser un Actionlistener.

    J'en connais trois :
    *création en class interne
    *création à la volé : MonBouton.addListener(new ActionListener(){public void actionPerformed(event e){//action}});
    *et faire une implémentation.

    Merci d'avance.
    Salut,

    pour moi, tout dépent de ce qu'on va mettre dans la méthode actionPerformed ! Je m'explique :
    * Tout petit code (< 10 lignes) : création à la volée
    * Code + long : classe interne
    * Code qui n'a pas besoin d'accéder aux attributs et méthode d'une classe précise : implémentation car réutilisable dans d'autres classes.

    Je sais pas si c'est correct, mais c'est ce que je fais .

  5. #5
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    Citation Envoyé par schniouf
    pour moi, tout dépent de ce qu'on va mettre dans la méthode actionPerformed ! Je m'explique :
    * Tout petit code (< 10 lignes) : création à la volée
    * Code + long : classe interne
    * Code qui n'a pas besoin d'accéder aux attributs et méthode d'une classe précise : implémentation car réutilisable dans d'autres classes.
    .
    il y a aussi d'autres critères:
    - le code dans une autre classe risque-t'il de créer un couplage entre classes?
    - faire implements ActionListener dans un code expose-t'il dans l'API publique des "affaires de famille" qui ne devrait pas être exposées à l'extérieur.

    très souvent j'ai un ActionListener local (classe interne ou anonyme) qui appelle les services d'une autre interface passée au composant (on distingue le fonctionnel de l'opérationnel lié à ActionListener -si je veux changer plus tard le comportement interne de mon composant et avoir un autre type de Listener l'API publique du composant ne change pas-)

  6. #6
    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
    Quatrième solution qui est à mon avis la plus propre et celle permettant le plus de choses, au lieu d'implémenter un ActionListener, créer une classe héritant d'AbstractAction, redéfinssant les méthodes adéquates et l'appliquer à ton bouton en utilisant la méthode setAction

  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par sinok
    Quatrième solution qui est à mon avie les plus propre et celle permettant le plus de choses, au lieu d'implémenter un ActionListener, créer une classe héritant d'AbstractAction, redéfinssant les méthodes adéquates et l'appliquer à ton bouton en utilisant la méthode setAction
    +1

    Je trouve aussi que c'est la méthode la plus propre. Avant je n'utilisais que des classes listeners internes, mais je trouve que ça devient vite le bordel. Tandis qu'avec directement une classe héritant d'AbstractAction, on arrive (de mon point de vue) à quelque chose de plus correct.

  8. #8
    Membre éclairé
    Inscrit en
    Décembre 2005
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 251
    Par défaut
    avant je faisais que des class interne, puis j'ai découvert les class anonyme (ce qui je trouve super). mais je voulez savoir s'il y avait des limites.
    A priori oui d'après professeur shadoko. mais je n'ai pas bien compris le pourquoi:
    class anonyme peu de code ??

    Une question pour savoir si j'ai bien compris : si je cré une class héritant de ActionListener c'est pas un peu équivalant à une class interne (mis à part la réutilisation)?

    merci en tous cas de vos réponses


    PS pour wichtounet : la relativité restrinte => chaque référentiel à son horloge et il n'y a pas de ref absolu
    la relativité générale : interraction entre la gravité et les photon (particule sans masse) d'où les trous noirs.

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

Discussions similaires

  1. Action performed actionlistener
    Par chlock62 dans le forum NetBeans
    Réponses: 1
    Dernier message: 15/11/2009, 14h07
  2. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18
  3. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37
  4. performance entre 3DS, ase, asc ...
    Par amaury pouly dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/03/2003, 11h41

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