Как использовать в Java-программах собственные события?

Модератор: Absurd

Ответить
buratino
Сообщения: 3
Зарегистрирован: 16 ноя 2004, 16:02

Прошу помощи у добрых людей!
В моей программе взаимодействуют два класса: GUI и внутренней логики InternalLogic.
Класс логики ничего не знает о GUI.
Его экземпляр является одним из полей GUI.
В этом же классе внутренней логики живет переменная private int score.
В процесе работы программы значение score может изменятся.

Задача состоит в том чтобы отобразить эти изменения, если таковы произойдут, на форме GUI.

Как это cделать?????

Если надо могу выслать код...
Можно ли генерировать из InternalLogic свое событие (например ScoreEvent), а в GUI добавить свой ScoreListener, которий бы на это все дело реагировал?
Как создавать классы собственных событий?
Как cделать так, чтобы ScoreListener знал, что ScoreEvent предназначен именно для него??!

Спасибо всем зарание...
zeed
Сообщения: 1
Зарегистрирован: 17 ноя 2004, 14:26
Контактная информация:

1. В GUI создаёш поле:
private ScoreListener sl;
2. В InternalLogic в ArrayList запихиваеш эту sl следующим методом:
public void setScoreListener(ScoreListener sl);
3. Далее, после изменения твоего score вызываеш sl.ScoreEvent

...ну и сам понимаеш, метод ScoreEvent для твоего конкретного ScoreListener обьекта вызовется в GUI.

не знаю на сколько понятно обьяснил... 8) но по-моему всё ясно
...и даже слепец прозреет...
Георгий
Сообщения: 3
Зарегистрирован: 09 ноя 2004, 11:55
Контактная информация:

buration, разве ваш вопрос не решен? (paradise)
Serafina
Сообщения: 11
Зарегистрирован: 16 ноя 2004, 22:13
Откуда: Питер
Контактная информация:

Шаблон Observer - ваш случай ;)

http://ooad.asf.ru/patterns/patterninfo.asp?ID=28
Георгий
Сообщения: 3
Зарегистрирован: 09 ноя 2004, 11:55
Контактная информация:

Я думаю, он уже понял:
http://www.relib.com/forums/topic.asp?id=844627
buratino
Сообщения: 3
Зарегистрирован: 16 ноя 2004, 16:02

С Observer/Observable действительно все получилось.
А что касается eventов/Listenerов хотелось бы разобратся до конца...

zeed,
в классе InternalLogic должно быть поле
private ArrayList al;
а в GUI - метод
public void setScoreListener(ScoreListener sl),
который делает что-то похожее на
il.setSl(sl);
где il - поле GUI типа InternalLogic,
а setSl() "запихивает эту sl" в il:
public void InternalLogic.setSl(ScoreListener sl) { al.add(sl); }

Да?
Другими словами, передать слушателя тому, что должно генерировать событие?
А потом в 3. sl.ScoreEvent (?) Это что - генерация события ?
слушатель генерирует событие??? себе же или как?
sl сидит в GUI - как на него ссылаться из InternalLogic?
наверно надо достать слушателя из al - мы же для этого его туда передаем...?

Я верно понимаю.? или как ...

Поправте меня пожалуйста!..
Ответить