Se vuoi seguire il funzionamento degli eventi in java devi definire un evento personalizzato, estendendo la classe EventObject. Esempio:
Codice PHP:
class MyStatusEvent extends EventObject{
public MyStatusEvent(Object source){
super(source);
}
//piu eventuali altri metodi pubblici...
}
Quindi definisci un'interfaccia che estende EventListener che definisce quali metodi devono essere implementati da un ascoltatore di tale evento:
Codice PHP:
interface MyStatusEventListener extends EventListener{
//Metodi da implementare per essere un ascoltatore di MyStatusEvent
public void myStatusChangedEvent(MyStatusEvent e);
//eventuali altri metodi
}
Ora, quando vuoi metterti in ascolto di un evento ti devi registrare come un ascoltatore sull'oggetto che solleva l'evento: la classe che solleva gli eventi deve quindi offrire dei metodi per registrare e deregistrare un listener:
public void addMyStatusEventListener(MyStatusEventListener l);
e
public void removeMyStatusEventListener(MyStatusEventListener l);
I listener li puoi raccogliere ad esempio in un Vector; ogni volta che devi generare l'evento, crei un MyStatusEvent evt, passandogli come argomento il riferimento this per esempio (cioè l'oggetto che sta sollevando l'oggetto), e per ogni listener registrato, invochi il metodo myStatusChanchedEvent(evt).
In particolare, visto che puoi voler sollevare eventi in piu punti del codice puoi definirti nella classe che solleva gli eventi un metodo
private fireMyStatusChangedEvent()
all'interno del quale ti crei l'oggetto evento MyStatusEvent:
MyStatusEvent evt = new MyStatusEvent(this);
e poi per ogni listener presente nel vettore dei listener invochi il metodo myStatusChangedEvent(evt).
Ovviamente nella classe MyStatusEvent puoi definire altri metodi pubblici per ricavare informazioni sull'evento, ad esempio per sapere qual è il valore del nuovo stato. Tieni presente che dato che MyStatusEvent estende EventObject, su un MyStatusEvent evt puoi invocare il metodo
Object getSource();
(evt.getSource())per avere l'oggetto che ha lanciato l'evento, e che è stato passato al costruttore di MyStatusEvent al momento della costruzione di evt.