855f06e4

Листинг 9.


public abstract class KeyPressedEventSource {

private Vector listeners = new Vector (); // Массив для хранения набора подписчиков

public synchronized void addKeyPressedListener (KeyPressedListener kpl) { // Зарегистрировать подписчика

listeners.addElement (kpl); }

public synchronized void removeKeyPressedListener(KeyPressedListener kpl) { // Аннулировать регистрацию

listeners.removeElement (kpl); }

protected fireKeyPressed (int Key) { // Распространение события (оповещение подписчиков)

Vector l; KeyPressedEvent kpe = new KeyPressedEvent (this, Key);

// Создадим локальную копию набора подписчиков // на момент возникновения события. // В процессе распространения события набор подписчиков // (но не локальная копия!) может изменяться synchronized (this) {l = (Vector) listeners.clone ();}

// Оповестим подписчиков о наступлении события

for (int i = 0; i < l.size(); i++) { ((KeyPressedListener) l.elementAt(i)).KeyPressed (kpe); } } }




Начало  Назад  Вперед