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.

1