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.