Salut,
Pour faire mes listeners, je fais toujours comme ça:
Mais je viens de découvrir que dans l'API (et c'est ce qui est utilisé par les listeners de l'API standard), il y a une classe EventListenerList
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 class MaClass { private Collection<XListener> listeners = new ArrayList<XListener>(); ... public void addXListener(XListener listener) { listeners.add(listener); } public void removeXListener(Listener listener) { listeners.remove(listener); } protected void fireXXX(...) { for(XListener listener : listeners) listener.XXX(...); } }
ce qui donnerait:
Laquelle est la "meilleure"? (et pourquoi?)
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 class MaClass { private EventListenerList listenerList = new EventListenerList(); ... public void addXListener(XListener listener) { listenerList.add(XListener.class, listener); } public void removeXListener(XListener listener) { listenerList.remove(XListener.class, listener); } protected void fireXXX(...) { Object[] listeners = listenerList.getListenerList(); /* elle est bizarre cette boucle, mais bon c'est dans la javadoc */ for (int i = listeners.length-2; i>=0; i-=2) { if(listeners[i]==XListener.class) { ((FooListener)listeners[i+1]).fooXXX(...); } } }
Partager