Event listener dla kontenerów

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

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;
  }
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/javase/tutorial/javabeans/properties/bound.html

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/javase/tutorial/javabeans/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'.

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/Java/Design-Pattern/UsingObserverpatternwithtwoobserversobservingachanginginteger.htm
Pozdrawiam!!!

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