Создание собственных событий в Java

Прежде всего нужно создать класс события, наследуемый от java.util.EventObject. В нем для удобства можно реализовать несколько конструкторов. Пример такого класса:
import java.util.EventObject;
public class CommandDataAvailiableEvent extends EventObject {
 
   private String message;
 
    public CommandDataAvailiableEvent(Object source, String message) {
     super(source);
     this.message = message;
   }
 
   public CommandDataAvailiableEvent(Object source){
     this(source, "");
   }
 
   public CommandDataAvailiableEvent(String s){
     this(null, s);
   }
 
   public String getMessage(){
    return message;
   }
 
   @Override
   public String toString(){
    return getClass().getName() + "[source = " + getSource() + ", message = " + message + "]";
   }
}
 
Далее следует определить интерфейс, который будут реализовывать все слушатели события. В интерфейсе должна быть объявлена функция, обрабатывающая событие:
public interface CommandDataAvailiableListener {
   public void commandDataAvailiable(CommandDataAvailiableEvent e);
}
 
В классе, генерирующему события, необходимо объявить коллекцию, в которой будут храниться ссылки на слушателей:
private ArrayList listeners = new ArrayList();
 
А после этого добавить несколько функций для обработки списка слушателей: добавление слушателя
public void addComDataEnableEventListener(ComDataEnableEventListener listener){
                listeners.add(listener);
              }
 
получение массива слушателй
           public ComDataEnableEventListener[] getComDataEnableEventListeners(){
                  return listeners.toArray(new ComDataEnableEventListener[listeners.size()]);
               }
 
удаление слушателя
           public void removeComDataEnableEventListener(ComDataEnableEventListener listener){
                   listeners.remove(listener);
               }
 
генерирования события
           protected void fireDataAvaliableEvent(String message){
                 ComDataEnableEvent ev = new ComDataEnableEvent(this, message);
                 for (ComDataEnableEventListener listener : listeners){
                   listener.DataAvaliableEvent(ev);
                 }
               }
 
На этом создание события завершено. Теперь, чтобы сгенерировать событие необходимо только вызвать функцию fireDataAvaliableEvent, и уведомления будут высланы всем слушателям.

Администрирование

Сегодня
Вчера
Эта неделя
Прошлая неделя
Этот месяц
Прошлый месяц
Вся статистика
37
3
37
26686
92
219
26753

IP: 18.189.157.185
Время: 2024-09-16 18:40:55
Счетчик joomla