Wykład 4 - kgrudzi
Transkrypt
Wykład 4 - kgrudzi
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. 2. 3. Rejestracja słuchacza u źródła otrzymywanie zawiadomienia o zdarzeniach. Słuchacz czeka na zdarzenie. 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.