Kiedy użytkownik np. klika na obiekt typu Component, zostaje utworzony obiekt typu Event. System AWT obsługi zdarzeń przekazuje to zdarzenie wyżej w hierarchii obiektów typu Component, dając każdemu elementowi szansę na obsłużenie tego zdarzenia.Każdy obiekt typu Component może reagować na zdarzenie w jeden z nastepujących sposobów:
- Ignorując zdarzenie i przekazując je wyżej. Jest to domyślna zasada działania.
- Przez modyfikację obiektu typu Event przed przekazaniem go wyżej w hierarchii. Na przykład, obiekt potomny typu TextFlied, który wyświetla wszystkie litery jako duże (CapsLock), może zareagować na naciśnięcie klawisza z małą literą przez zmianę tej litery na dużą w obiekcie Event.
- Przez reakcję na dane zdarzenie.
- Przez przerwanie danego zdarzenia i nieprzekazywanie go wyżej. Takim zdarzeniem może być naciśnięcie niewłaściwego klawisza w polu typu TextField. Wówczas implementacja pola tekstowego zależna od platformy sprzętowej nigdy nie zobaczy tego zdarzenia.
Można powiedzieć, że system AWT obsługi zdarzeń jest systemem filtracji zdarzeń.
Chociaż AWT definiuje wiele rodzajów różnych zdarzeń, nie widzi on wszystkiego, co się dzieje. Z tego powodu AWT widzi tylko te zdarzenia, które kod programu pozwala mu widzieć. Np pola tekstowe nie przekażą zdarzenia polegającego na ruchu myszš do AWT. Chcąc mieć dostęp do szerokiego wachlarza zdarzeń, można zaimplementować typ potomny klasy Canvas, który umożliwia obsługę wszystkich zdarzeń.
The Event Object
Obiekt typu Event przechowuje nastepujące informacje:
- Typ zdarzenia -- na przykład naciśnięcia klawisza, kliknięcie myszą, akcja lub zmiana stanu okna (do ikony).
- Obiekt będący celem zdarzenia -- na przykład przycisk odpowiadający przycskowi naciśni etemu na ekranie lub obiekt typu TextField odpowiadający polu tekstowemu, do którego wpisano znak.
- "Czas" wystąpienia zdarzenia.
- Położenie (x,y) gdzie zdarzenie nastąpiło mierzone względem początku obiektu typu Component.
- Naciśnięty klawisz (dla zdarzeń związanych z klawiaturą).
- Globalny argument (jak np. łańcuch wyświetlany na obiekcie typu Component) związany ze zdarzeniem.
- Stan klawiszy funkcyjnych jak Shift lub Control.
Gdańsk 03.05.1998