![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| sith |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
... такая задача...
... есть обьекты Х и Y... которые создаються в обьекте Z... как реализовать следующую задачу... обьект X должен слушать обьект Y и делать какието действия... -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
sith
Гм, так мы же с тобой в соседней теме обсудили события и их слушателей, LSD там довольно подробно все расписал.. Конкретизируй задачу и что именно непонятно. |
|||
|
||||
| sith |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
как бы это обьяснить...
... как делать обработчик я понял... а как другим обьектам пользоваться им не понимаю... вот допустим мой конкретный случай... есть обьект InputThread in - он принимает входящие сообщения... этот обьект создаеться в обьекте ClienyThread... что бы слушать этот обьект я делаю следующее действие... ...
... то есть я создаю обьект и добавляю слушателя... а как допустим слушать изменения в обьекте in другим обьектам, которые не имеют никакого отношения к его созданию...? -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Объект который хочет слушать события от InputThread должен знать от какого InputThread он хочет слушать события, и значит иметь ссылку на него. А раз есть ссылка, то можно вызывать in.addChangeListener(this);.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Maksym |
|
|||
![]() . ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1456 Регистрация: 19.8.2005 Где: Odessa, Black Sea Репутация: 14 Всего: 62 |
Смотри, объект, который хочет чтоб его слушали должен иметь метод типа add...Listener(...), например addChangeListener(ChangeListener listener), который требует от своего параметра (заинтересованного в событии объекта) реализации интерфеса определенного слушателя, к примеру ChangeListener.
Такой интерфейс обычно содержит один метод, например valueChange(Event ev). То есть, любой объект, который хочет узнавать о событии (заинтересованный объект) должен имплементировать интерфейс ChangeListener, переопределяя его valueChange(Event ev) своей собственной реакцией на событие. Все эти заинтересованные объекты должны зарегистрироватья у источника событий, то есть попросту нужно вызвать у этого самого источника addChangeListener(ChangeListener listener) для каждого слушателя (читай занитересованного объекта) -- иначе говоря добавить слушателей. Самому источнику по барабану, кто его слушает, ему достаточно знать что все они реализуют интерфейс ChangeListener, а значит их можно к нему откастить и вызвать у них valueChange(Event ev). Он сделал свое дело (которого все ждут), пробежался по списку слушателей и повызывал у всех valueChange(Event ev)... -- получилось, что реакция на событие у всех слушателей отработла и все довольны. Фуухх.. объяснятель из меня, конечно, не очень, но уж как смог... |
|||
|
||||
| hamsterKSU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 1 Всего: 11 |
addxxxListener можно вызывать сколько угодно раз. у тя ж там будет список слушателей, вот ты будешь проходить по этому списку и вызывать у них метод заявленый в интерфейсе
|
|||
|
||||
| sith |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
это вроде бы мне ясно... но есть НО которое не укладываеться в моей голове...
... вот мой класс Х который никакого отношения не имеет к обьекту которого хочет слушать... реализует нужный интерфейс... а как мне в этом классе добавить слушателя... тоесть как вызвать addXxxListener оъекта in которого хочу слушать что бы зарегистрировать слушателя...? Добавлено через 6 минут и 16 секунд LSD как получить ссылку на обьект не создавая его... -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Ну ты загнул
Или ты таки не понял сути идеи, или объясняешь как проктолог. Смотри, модель такая: Есть класс А, который реализует интерфейс В. Интерфейс В служит для определения колбэк-методов, которые вызываются при возникновении интересных тебе событий. Есть класс С, который имеет список листенеров (ссылок на В). Он же реализует у себя методы addXxxListener и removeXxxListener. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| sith |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
можно код...
-------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Блин, ну это же элементарно. Всего-то надо один раз прочитать статейку или посмотреть, как это реализовано в той же жабе.
Теперь-то хоть понятно? -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| sith |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: нет Всего: 1 |
nornad... не чувак... мне кажеться мы говорим о разных вещах...
... все это LSD описал в предыдущей теме и это мне понятно... ... мне не понятно другое... вот получаеться так что в классе C есть какоето поле допустим значение которого я хочу прослушивать... и при изменении его нужно что бы все слушатели получали его... ... как это будет выглядеть в мэйн методе... ... как мне добавить класс А как слушателя класса С Добавлено через 7 минут и 24 секунды и почему у тебя в приведенном примере нет класса у которого в предках стоит EventObject, у LSD было так... -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
| nornad |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Хой, пипл. Я в курсе, что я не чувак.
Потому что в упрощённом варианте он не требуется. С ним правильнее, но и без него работать будет. Теперь по твоему вопросу. В примере, который я привёл действительно А слушает С, а не наоборот. Извини, что ввёл в заблуждение. Вот что надо добавить, чтобы при возникновении некоторого события все слушатели срабатывали на него:
В мэйне будет что-то вроде такого:
Это сообщение отредактировал(а) nornad - 6.4.2007, 00:17 -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
||||||
|
|||||||
| hamsterKSU |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 1 Всего: 11 |
потомучто он тебе обяснял про Listпро а не про событие Добавлено через 5 минут и 11 секунд блин ты либо не доганяешь либо не хочешь догнать у класса С должен быть методы addXXXListener(Listener e) класс А реализует интерфейс слушателя событий от класса С тогда
вот и все чего тут не понятно или никто не может понять что ты хочешь и прочитай статьи на которые я тебе указал. там все описано тем более что LSD тоже тебе рассказывал |
||||
|
|||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
Скорее второе, ибо уже давно можно было и статейку прочесть и в жабе посмотреть на добавление слушателя к любому гуёвому классу - сырцы не так уж далеко запрятали. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
| hamsterKSU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 1 Всего: 11 |
закрываем тему, пусть хоть чуть чуть приложит усилий. подругому обяснить уже никак нельзя
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |