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

Collection et Stream Java Discussion :

Collections et Listener


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut Collections et Listener
    Bonjour

    J'aimerai ajouter un listener sur une collection, pour générer un événement à chaque fois que l'on ajoute ou supprime un élément.

    Il y a une solution simple? Ou est ce que je dois redéfinir toutes les methodes add et remove de ma collection (un array List sans doute)

    Merci!

  2. #2
    Membre émérite Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Par défaut
    Salut,
    je crois que la méthode la plus simple serait de redéfinir les méthodes add et remove ( il n'y a que 2 add et 2 remove dans la classe ArrayList ).
    Sinon, tu peux voir ce cours : http://rom.developpez.com/java-listeners/ , il parle de comment créer ses propres listeners.

  3. #3
    Membre éprouvé Avatar de jean.2edi
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 106
    Par défaut
    Je me lance...

    A priori, je dirais : non, pas de solution simple ! Puisque ni Collection, ni List, ni AbstractList, etc... n'intègrent de notion de Listener, tu dois écrire à la main !
    Par contre, tu peux utiliser un pattern genre décorateur pour écrire ta liste avec Listener en utilisant une implémentation de liste existante (par exemple ArrayList) :
    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
     
    public class ListenedList<E> extends ArrayList<E> {
     
        private ArrayList<E> realList;
     
        public ListenedList() {
            realList = new ArrayList<E>();
        }
     
        @Override
        public boolean add(E o) {
            return realList.add(o);
        }
     
        ...
    }

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 42
    Par défaut
    C'est bien ce qu'il me semblait, pas de solution "clé en main"... ça me semble pourtant super utile

    Je pars donc sur la solution de surcharger les méthodes

Discussions similaires

  1. collection de listener
    Par TabrisLeFol dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 05/07/2007, 15h44
  2. [VB6] la collection controls
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 30/04/2003, 17h03
  3. Comment créér une collection sous Delphi
    Par PsyKroPack dans le forum Langage
    Réponses: 6
    Dernier message: 11/02/2003, 13h20
  4. DoubleClick Listener & ENTER
    Par Pro_Fete dans le forum Composants
    Réponses: 4
    Dernier message: 27/01/2003, 13h23
  5. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49

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