Apleturi Java
5. Evenimente: interactiunea prin intermediul mouse-ului si tastaturii.
Java furnizeaza o multime de modalitati prin care apletul poate raspunde
in mod diferit la diferite actiuni ale mouse-ului sau tastaturii.
Clasa Event defineste o multime de constante care reprezinta la ce anume eveniment
a fost supus mouse-ul sau tastatura.
Sa luam mai intai evenimentele care pot fi aplicate mouse-ului:
Mouse-ul genereaza 6 tipuri de evenimente care pot fi capturate in aplet:
MOUSE_DOWN, MOUSE_UP, MOUSE_MOVE, MOUSE_DRAG, MOUSE_ENTER, MOUSE_EXIT.
Clasa java.awt.Component, din
care deriva clasa java.applet.Applet,
defineste mai multe functii, care vor fi apelate automat de sistem atunci cand
are loc un eveniment de tipul respectiv. Aceste functii sunt:
public boolean mouseDown(Event evt,
int x, int y);
public boolean mouseUp(Event evt, int x, int y);
public boolean mouseMove(Event evt, int x, int y);
public boolean mouseDrag(Event evt, int x, int y);
public boolean mouseEnter(Event evt, int x, int y);
public boolean mouseExit(Event evt, int x, int y);
De exemplu, functia mouseDown
este apelata atunci cand este apasat butonul mouse-ului, iar x si y reprezinta
coordonatele mouse-ului unde a avut loc evenimentul.
Pentru tastatura au fost definite constante, la fel ca si in cazul mouse-ului:
f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12,
DOWN, UP, LEFT, RIGHT, HOME, END,
PGDN, PGUP. Functiile corespunzatoare, definite in clasa Component
sunt:
public
boolean keyDown(Event evt, int tasta);
public
boolean keyUp(Event evt, int tasta).
Toate evenimentele primite de un aplet
sunt de fapt preluate de metoda handleEvent(),
definita in clasa Component astfel:
public boolean handleEvent(Event evt)
{
switch
(evt.id) {
case Event.MOUSE_ENTER:
return mouseEnter(evt, evt.x, evt.y);
case Event.MOUSE_EXIT:
return mouseExit(evt, evt.x, evt.y);
case Event.MOUSE_MOVE:
return mouseMove(evt, evt.x, evt.y);
case Event.MOUSE_DOWN:
return mouseDown(evt, evt.x, evt.y);
case Event.MOUSE_DRAG:
return mouseDrag(evt, evt.x, evt.y);
case Event.MOUSE_UP:
return mouseUp(evt, evt.x, evt.y);
case Event.KEY_PRESS:
case Event.KEY_ACTION:
return keyDown(evt, evt.key);
case Event.KEY_RELEASE:
case Event.KEY_ACTION_RELEASE:
return keyUp(evt, evt.key);
case Event.ACTION_EVENT:
return action(evt, evt.arg);
case Event.GOT_FOCUS:
return gotFocus(evt, evt.arg);
case Event.LOST_FOCUS:
return lostFocus(evt, evt.arg);
}
return false;
}
Desi implementarea explicita a acestei functii apeleaza metode speciale care
pot fi suprascrise, poate doriti sa grupati toate evenimentele intr-o singura
metoda, sa schimbati modalitatea in care apletul raspunde la un eveniment particular
sau, de ce nu, sa creati propriile dumneavoastra evenimente. Pentru a efectua
acestea, trebuie sa suprascrieti metoda handleEvent().
In corpul suprascris, trebuie sa examinati campul id
al evenimentului pentru a determina ce tip de eveniment este prelucrat. Puteti
ignora evenimentele care nu va intereseaza, caz in care trebuie sa returnati
valoarea false.