Event listener dla kontenerów

Odpowiedz Nowy wątek
2011-07-21 10:59
0

Witam
Poszukują od jakiegoś czasu rozwiązania następujacego problemu. Chciałbym napisać mechaniz informujący, że został dodany lub usuniety element z kolekcji np ArrayList, co pozwoli mi wykonać przewidziane zachowanie przez kod (coś w rodzaju ActionLitener dla buttonów). Czy istnieje jakiś gotowy mechanizm w javie? Jak podejść do tego problemu?
Z góry dziękuję za zainteresowanie

Pozostało 580 znaków

2011-07-21 12:02
bo
0

Chyba nie ma odpowiedniego mechanizmu w Javie. Możesz wszystkie wywołania postaci kontener.add(element) zastąpić metodą add(kontener,element) o takim mniej więcej działaniu

  boolean add(ArrayList kontener,.. obiekt)
  {
     boolean result=kontener.add(obiekt);
     if(result)
       //obsługa lub wygenerowanie jakiegoś zdarzenia
     return result;
  }

Pozostało 580 znaków

2011-07-21 12:17
0

up:
Rozwiązanie nie wymaga przecież użycia metod statycznych. Wystarczy dziedziczyć po klasie ArrayList i poprzeciążać metody. Metody, które powinny wysyłać zdarzenia powinny być przeciążone, zawierać instrukcję do wysyłania zdarzenia, a potem super.metoda().

W Javie są nawet gotowe klaski do obsługi takich Listenerów o jakie ci chodzi. Są to klaski java.beans.PropertyChangeListener i java.beans.PropertyChangeSupport.
http://download.oracle.com/ja[...]vabeans/properties/bound.html


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit, 2011-07-21 12:19

Pozostało 580 znaków

2011-07-21 18:22
ismail
0
Wibowit napisał(a)

up:
Rozwiązanie nie wymaga przecież użycia metod statycznych. Wystarczy dziedziczyć po klasie ArrayList i poprzeciążać metody. Metody, które powinny wysyłać zdarzenia powinny być przeciążone, zawierać instrukcję do wysyłania zdarzenia, a potem super.metoda().

W Javie są nawet gotowe klaski do obsługi takich Listenerów o jakie ci chodzi. Są to klaski java.beans.PropertyChangeListener i java.beans.PropertyChangeSupport.
http://download.oracle.com/ja[...]vabeans/properties/bound.html

Raczej Observer i Observable z API. Property sa od tego, aby powiadamiac czy sie zmienila jakas wlasciwosc. Dodanie czegos to nie jest zmiana wlasciwosci, ew. na sile 'size'.

No w sumie to chyba masz rację. - Wibowit 2011-07-21 21:21

Pozostało 580 znaków

2011-07-27 22:26
0

Dzięki za pomoc. Chyba to jest to czego szukałem. Przetestuje funkcjonalność do swojej aplikacji. Tutaj prosty przykład z zastosowania:
http://www.java2s.com/Code/Ja[...]observingachanginginteger.htm
Pozdrawiam!!!

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0