Obsługa zdarzeń Wykład 4
Zdarzenia Zdarzenie niskiego poziomu to wciśnięcie klawisza klawiatury lub kliknięcie przycisku myszki. Większość zdarzeń jest generowana przez: mysz klawiaturę elementy interfejsu graficznego
Obsługa zdarzeń jest zawarta w pakiecie java.awt.event.
Przebieg obsługi zdarzenia źródło generuje zdarzenia zdarzenia są wysyłane do słuchaczy 1. Rejestracja słuchacza u źródła otrzymywanie zawiadomienia o zdarzeniach. 2. Słuchacz czeka na zdarzenie. 3. Słuchacz obsługuje je i powraca.
Źródła zdarzenia Zdarzenie to obiekt, który opisuje zmianę stanu źródła, spowodowane: Kliknięciem w klawisz; Ruch myszki; Wybór elementu z listy; itp. Jedno źródło moŝe generować kilka zdarzeń
Słuchacze Obiekty, które otrzymują informacje o zdarzeniach. Zarejestrowany u źródła!!! Implementuje metody przetwarzające dane związane ze zdarzeniem
Rejestracja słuchacza na wydarzenia TYPE JeŜeli jesteśmy zainteresowani reagowaniem na wystąpienie konkretnego zdarzenia, musimy w kodzie programu zidentyfikowaćźródło zdarzenia, Dla akcji uŝytkownika polegających na wciśnięciu przycisku programowego, źródłem jest przycisk (obiekt typu JButton) AddTYPEListener(TypeListner e) Źródło zdarzenia MouseMotion Key itd e to odwołanie do słuchacza zdarzeń
Słuchacz implementacja interfejsów dla rodzaju zdarzeń Interfejs KeyListner: void keypressed(keyevent ke) void keyreleased(keyevent ke) void keytyped(keyevent ke)
Zdarzenia AWTEvent KeyEvent generowany, gdy otrzymane jest wejście z klawiatury MouseEvent generowany, gdy mysz jest przesuwana, klikana, naciskana, zwalniania, itp. ActionEvent generowany gdy naciskany jest przycisk, wybierany element menu, itp. TextEvent generowany gdy zmienia się wartość pola tekstowego
Mysz - MousEvent MouseEvent InputEvent AWTEvent MOUSE_CLICKED - kliknięcie MOUSE_DRAGGED - przeciąganie MOUSE_ENTERED wejście do elementu MOUSE_EXITED wyjście z elementu MOUSE_MOVED - przesuwanie MOUSE_PRESSED naciskanie MOUSE_RELEASED - zwalnianie
Konstruktor dla Myszy MouseEvent(Component src, int type, long when, int modifiers, int x, int y, int clicks, boolean triggerspopup) src odwołanie do obiektu wywołującego zdarzenie type typ zdarzenia when czas systemowy, kiedy do niego doszło modyfiers które modyfikatory były wciśnięte X, y współrzędne myszy clicks liczba kliknięć triggerspopup czy pojawiło się menu
Metody zdarzenia dla Myszy int getx(), int gety() współrzędne myszy void translatepoint(int x, int y) zmiana współrzędnych zdarzenia int getclickcount() ilość kliknięć
klawiatura KeyEvent jest generowany dla wejścia z klawiatury. Trzy typy zdarzeń klawiatury: KEY_PRESSED klawisz jest naciśnięty KEY_RELEASED klawisz jest zwolniony KEY_TYPED znak jest wygenerowany Konstruktor zdarzenia klawiatury: KeyEvent(Component src, int type, long when, int modifiers, int code, char ch)
Kody klawiszy VK_ENTER VK_ESCAPE VK_CANCEL VK_UP VK_DOWN VK_LEFT VK_RIGHT VK_SHIFT VK_ALT
Metody zdarzeń char getkeychar() int getkeycode() CHAR_UNDEFINED gdy znak niedostępny. VK_UNDEFINED gdy kod niedostępny.
Źródła zdarzenia interfejs graficzny Button generuje ActionEvent gdy przycisk jest naciskany List generuje ActionEvent gdy element listy jest podwójnie klikany, a ItemEvent gdy element jest wybierany lub zwalniany Window generuje WindowEvent gdy okno jest aktywowane, zamykane, otwierany, minimalizowane, przywracane, usuwane
przykład public class przyklad implements ActionListener{ public void actionperformed(actionevent e){ String tekst=e.getactioncommand(); System.out.println(tekst); } przykład(){ JButton b = new JButton( przycisk ); b.addactionlistener(this); }
Interfejs KeyListener Interfejs do implementacji przez słuchacza klawiatury, aby ten mógł obsługiwać KeyEvent. void keypressed(keyevent ke) void keyreleased(keyevent ke) void keytyped(keyevent ke)
Przykład UŜytkownik naciska i zwalnia klawisz 'A'. Trzy zdarzenia: naciśnięty, znak, zwolniony.
Interfejs MousListener void mouseclicked(mouseevent me) void mouseentered(mouseevent me) void mouseexited(mouseevent me) void mousepressed(mouseevent me) void mousereleased(mouseevent me)
Interfejs MouseMotionListener void mousedragged(mouseevent me) void mousemoved(mouseevent me)
Zasady raz jeszcze implementować interfejs słuchacza tak by otrzymać powiadomienia o danym typie zdarzeń zarejestrować słuchacza jako odbiorcę powiadomień Źródło moŝe generować kilka typów zdarzeń. Słuchacz moŝe rejestrować odbiór wielu rodzajów zdarzeń, jednak musi implementować wszystkie interfejsy dla ich obsługi.