Bonjour, je suis en train d'essayer d'implémenter du MVC dans une appli et j'aurais deux petites questions concernant les listener:

Tout d'abord, je veux pour l'instant juste implémenter un listener pour une liste ( de type ArrayList), afin que lorsque des ajouts se font dans cette liste, les composants qui se chargent de l'afficher se mette automatiquement à jour. Je n'ai rien trouvé de pré existant pour effectuer ceci, c'est normal ou j'ai mal cherché ?

Ne trouvant rien, je suis partie pour implémenté ca moi même. Vu que je risque d'avoir pas mal de ces lists, je pensais partir sur un un Listener Generique. J'ai donc le code suivant :

Pour mon interface
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
public interface ListListener<T> extends EventListener{
 
    public void dagChanged(ListEvent<T> event); 
 
    public void dagAdded(ListEvent<T> event);
 
    public void dagSuppressed(ListEvent<T> event);
 
    public void dataChanged(Object source);
 
 
}
Pour l'Event :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class ListEvent<T> {
    private T data;
    private Object source;
 
    public ListEvent(Object source, T cData) {
        data = cData;
        this.source = source;
    }
 
    public T getDag() {
        return data;
    }
 
}

Puis j'ai fais la classe ListListenable (faut vraiment que je trouve un meilleur nom) suivante :
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
 
 
public class ListListenable<T> extends ArrayList {
 
     private EventListenerList listeners;
 
    @Override
    public boolean add(Object e) {
        fireDataAdded((T)e);
        return super.add(e);
    }
 
 
 
   public void fireDataAdded(T data) {
        ListListener[] listenerList = (ListListener[]) listeners.getListeners(ListListener.class);
        for (ListListener listener : listenerList) {
            listener.dagChanged(new ListEvent<T>(this, data));
        }
    }
 
 public void fireListChanged() {
        ListListener[] listenerList = (ListListener[]) listeners.getListeners(ListListener.class);
        for (ListListener listener : listenerList) {
            listener.dataChanged(this);
        }
    }
 
 
 
}
Je ne met que la fonction add toute simple, le reste suit la même logique.

Je voudrais donc savoir, d'une part si la façon de faire tout ca est juste ?
De plus, j'ai une fonction d'écoute de l'ajout, la suppression, la modification, ainsi qu'une fonction qui écoute n'importe quel changement sur la list. Et je me demandais si le fireListChanged() devait être appellé avant ou après un fire plus précis ?

En vous remerciant ^^