Re[5]: ActionListener
От: iZEN СССР  
Дата: 23.07.06 00:04
Оценка: -1
Здравствуйте, Dali, Вы писали:

D>Здравствуйте, ekamaloff, Вы писали:


E>>Думаю, стоит почитать какой-нибудь туториал по java, в частности про generic-и и циклы , я просто даже не знаю, как на такие вопросы ответить. Можно попробовать еще вот эту ссылку: http://java.sun.com/j2se/1.5.0/docs/guide/language/index.html


D>Спасибо за ответ!

D>Просто получилось так,что я не перешла на Ява 1.5........а работаю с версией 1.4.2_11, поэтому такие понятие как generic-и не были понятны. Но код моей программы написан именно на этой версии и прийдется с ней и доработать до конца думаю.
D>Можете быть знаете как это прописать без generic.
D>Все же спасибо за совет!
Совсем запутали бедную девушку.

Основная техника обработки событий в java (AWT и SWING) базируется на нескольких вещах:
1) способ получения события от системы;
2) создание и хранение ссылок на объекты, которые заинтересованы в получении событий;
3) способ оповещения о наступлении события;
4) заинтересованные объекты могут (но необязательно) поддерживать общий интерфейс слушателя событий целевого объекта.

Чтобы реализовать п.1 объекту нужно: а) самому стать получателем событий (для перехвата низкоуровневых событий AWT нужно написать одну строчку) и б) мочь обрабатывать их (написать метод обычный слушателя).
Чтобы реализовать п.2 объекту нужно: а) предоставить контейнер (Vector или ArrayList) для этих ссылок (пример: Vector myListeners = new Vector(); ) б) принимать ссылки о заинтересованных в (его) событиях объектах (myListeners.add(newListener); ).
Чтобы реализовать способ п.3 объекту нужно: а) создать объект нового события (своего собственного события, определив класс MyEvent и создав его экземпляр); б) определить метод рассылки с энумератором (простейший цикл, например) для контейнера, в котором вызывать метод оповещения например так: protected void fireEvent(MyEvent event) {цикл по контейнеру: для всех заинтересованных вызвать xxxListener.actionPerformed(event);}, где событие класса MyEvent — это "внутренне переработанное" объектом системное событие в новое собственное, которое передаётся всем заинтересованным слушателям.
Чтобы реализовать п.4 нужно использовать заранее определённые объекты для контейнера источника событий, либо описывать общий интерфейс слушателя (MyEventListener) и реализовывать его абстрактный метод actionPerformed(MyEvent event) в каждом конкретном классе объекта, заинтересованного в получении события MyEvent.

Технику синхронизации неплохо бы применить, но это на потом можно оставить.

Шаблоны из Java 5.0 трогать пока не стоит, а лучше почитать книжку "Swing: Эффектные пользовательские интерфейсы. Библиотека программиста" товарища Портянкина (ISBN 5-469-00005-2, изд. Питер).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.