Per prima cosa auguri a tutti
Poi vengo subito al problema, dall'esposizione fin troppo prolissa.
Ho un problema con la gestione degli eventi che non riesco a comprendere.
Ho una classe clsScacchieraLayout che deve notificare alcune azioni ad un'altra classe: clsScacchiera.
Per fare questo ho proceduto come segue:
1- ho definito una interfaccia ScacchieraListener con gli eventi da notificare:
codice:package Scacchiera; import java.util.EventListener; interface ScacchieraListener extends EventListener { public void Muovi(ScacchieraLayoutEvent event); public void Invia(ScacchieraLayoutEvent event); public void Indietro(ScacchieraLayoutEvent event); }
2- definito una nuova classe per gli eventi:
3- All'interno di clsScacchiera ho definito una nuova classe che implementa ScacchieraListenercodice:package Scacchiera; import java.util.EventObject; class ScacchieraLayoutEvent extends EventObject { private static final long serialVersionUID = 1L; public String msg; public String canale; ScacchieraLayoutEvent(clsScacchieraLayout source) { super(source); } ScacchieraLayoutEvent(clsScacchieraLayout source, String msg) { super(source); this.msg = msg; } ScacchieraLayoutEvent(clsScacchieraLayout source, String msg, String canale) { super(source); this.msg = msg; this.canale=canale; } }
4- sempre da clsScacchiera viene istanziata clsscacchieralayout e fatto addlistenercodice:class actionPerformed implements ScacchieraListener {[....]}
dove addListener è il metodo di ScacchieraLayout:codice:actionPerformed handlerAction = new actionPerformed(); scacchieraLayout = new Scacchiera.clsScacchieraLayout(applet, bianchi, neri, tempo,socket.userName,canale); scacchieraLayout.addListener(handlerAction);
codice:public void addListener(ScacchieraListener listener) { listeners.add(ScacchieraListener.class, listener); }
5- Finalmente arrivo al problema che c'è quando faccio scattare l'evento. Se elimino le righe commentate sotto non scatta l'evento ma non riesco a capire il motivo
Qualche idea su dove sbaglio?codice:private void fireIndietroEvent() { ScacchieraLayoutEvent event = new ScacchieraLayoutEvent(this); Object[] listenersArray = listeners.getListenerList(); for (int i = listenersArray.length - 1; i >= 0; i -= 2) { //if(listenersArray[i] == LoginListener.class) { ((ScacchieraListener) listenersArray[i]).Indietro(event); // } } }


Rispondi quotando
