Sunteți pe pagina 1din 9

Java 1 Modul 7

7.1 Evenimente

Evenimentele reprezinta unul dinre modurile in care un utilizator interactioneaza cu interfata grafica. Dezvoltarea de
aplicatii software care se bazeaza pe evenimente pentru interactiunea cu utilizatorul se numeste event-driven programming;
Exemple de evenimente sunt:

 apasarea pe butonul unui mouse


 tinerea apasata a unui buton
 eliberarea unui buton
 drag-and-drop
 apasarea unei taste
 eliberarea unei taste
 miscarea cursorului
 intrarea sau iesirea cursorului pe sau de pe o componenta

In urma unui astfel de eveniment programul poate fi conceput sa execute un anumit set de instructiuni; Un eveniment
este asociat unei componente; Altfel spus este nevoie sa precizam mai intai la ce componenta se refera un anumit eveniment;
Acest lucru se poate face cu ajutorul unui ascultator (listener); Un ascultator este un obiect care dezvolta un fir de executie
separat ce asteapta un eveniment de un anumit tip pentru o componenta pe care a fost setat; Un eveniment este un obiect
care se instantiaza in momentul in care utilizatorul interactioneaza cu interfata grafica;
Pasii pentru descrierea unui eveniment sunt:

1. Aplicarea unui ascultator pe o componenta


2. Scrierea instructunilor care se executa dupa ce s-a returnat un astfel de eveniment

7.2 Click pe butoane

Unui buton definit cu ajutorul clasei Button din pachetul java.awt i se poate atasa un ascultator pentru un eveniment de tip
ActionEvent; Acest eveniment este de fapt cel ce reprezinta un click pe buton;
Mai intai va trebui sa implementam interfata ActionListener; Aceasta se afla in pachetul java.awt.event.* care trebuie
importat; Pe butonul pe care vrem sa atasam ascutlatorul vom folosi metoda addActionListener() care primeste ca
paramentru o instanta a clasei care suprascrie metoda actionPerformed(ActionEvent ev); La suprascrierea acestei metode
scriem instructiunile care trebuiesc executate la intalnirea evenimentului;
O a doua metoda este trimiterea ca parametru metodei addActionListener() a unei instante definite abstract prin
suprascrierea clasei si a metodei actionPerformed()

1
2
7.3 MouseListener

MouseListener este interfata care contine metodele ce trebuiesc suprascrise pentru cinci evenimente diferite ce pot fi
executate cu ajutorul mouseului pe o componente oarecare:
void mouseClicked(MouseEvent e)
Pentru click cu mouseul pe o componenta
void mouseEntered(MouseEvent e)
Pentru intrarea cu cursorul pe o componenta
void mouseExited(MouseEvent e)
Pentru iesirea de pe o componenta a cursorului
mousePressed(MouseEvent e)
Pentru apasarea unui buton
mouseReleased(MouseEvent e)

3
Pentru eliberarea unui buton
Daca implementati interfata MouseListener va trebui sa suprascrieti toate metodele descrise in tabelul de mai sus, chiar
daca doar o parte au un rost in scrierea programului; Regula este urmatoarea general valabila:
La implementarea unei interfete trebuiesc suprascrise toate metodele publice definite in acea interfata;

7.4 MouseMotionListener

Interfata MouseMotionListener contine metode care trebuiesc suprascrise pentru evenimente de miscare ale mouseului:

 drag (apasarea butonului si miscarea cursorului)


 move (miscarea cursorului)

4
mouseDragged(MouseEvent e)
pentru evenimentul de drag

mouseMoved(MouseEvent e)
pentru miscarea cursorului

Pentru a atasa un astfel de ascultator pentru oriceare dintre aceste doua metode folosim metoda
addMouseMotionListener();

7.5 MouseEvent

MouseEvent este clase care defineste un eveniment specific mouseului; Instante de MouseEvent sunt trimise aproape
pentru fiecare tip de eveniment specific mouseului; Din acest motiv voi arata cateva comportamente ale acestui obiect care
pot fi folosite in aplicatii;

 getButton() - returneaza o constanta din care poate fi aflat butonul de pe mouse de pe care s-a apasat
 getClickCount() - returneaza numarul de click-uri single-click, double-click ... etc sub forma unui int
 getModifiersEx() - returneaza sub forma unui int tastele care au fost tinute apasat atunci cand s-a facut click cu
mouse-ul "ctrl", "shift", "ctrl-shift" ...etc
 getMouseModifiersText(int mod) - traduce numarul care reprezinta tastele tinute apasat la click in siruri de caractere
care reprezinta exact numele tastelor ca mai sus
 getPoint() - returneaza un Point reprezentad locatia cursorului pe componenta
 getX() - returneaza coordonata X a punctului in care se afla cursorul relativ la componenta
 getY() - returneaza coordonata Y a punctului in care se alfa cursorul relativ la componenta
 getXOnScreen() - returneaza coordonata X a punctului in care se alfa cursorul relativ la ecran
 getYOnScreen() - returneaza coordonata Y a punctului in care se alfa cursorul relativ la ecran

Metoda getButton este in general folosita impreuna cu constantele :

 BUTTON1
 BUTTON2
 BUTTON3
 NOBUTTON

5
Valoarea returnata de metoda se compara cu una din constante si se afla in felul acesta de pe ce buton s-a apasat sau in
cazul in care evenimentul nu a fost creat de catre mouse acesta va fi egal cu NOBUTTON;

7.6 MouseWheelListener si MouseWheelEvent

MouseWheelListener este o interfata care contine metoda ce trebuie suprascrisa pentru verificarea miscarii rotitei
mouseului;

 mouseWheelMoved(MouseWheelEvent ev)

Evenimentul specific rotitei mouseului este MouseWheelEvent

7.7 MouseAdapter

Folosirea interfetelor prezentate in lectiile anterioare are un dezavantaj semnificativ; De exemplu pentru interfata
MouseListener daca dorim sa folosim doar evenimentul Click adica metoda mouseClicked(MouseEvent ev) atunci va trebui
oricum sa le suprascriem si pe celelalte 5 metode; MouseAdapter este o clasa care ne scapa de munca nefolositoare de
suprascriere a acestor metode de fiecare data cand folsim un eveniment; Aceasta clasa poate fi folosita pentru oricare dintre
evenimentele prezentate in lectiile antorioare referitoare la mouse sau la rotita mouseului; Cu alte cuvinte in locul interfetelor
descrise anterior vom folosi doar clasa MouseAdapter; Totusi va trebui sa pastram in functie de tipul evenimentului
ascultatorul corespunzator:

 addMouseListener()
 addMouseMotionListener()
 addMouseWheelListener()

Fiind o clasa care suprascrie metodele in toate celelalte interfete, la folosirea MouseAdapter nu mai este nevoie sa
suprascrem decat metodele care ne sunt necesare (cele pe care le folosim);

6
7.8 ComponentListener si ContainerListener

Metode din interfata ComponentListener:


componentHidden(ComponentEvent e)
Aruncat daca componenta a fost facuta
invizibila
componentMoved(ComponentEvent e)
Aruncat daca componenta a fost mutata
componentResized(ComponentEvent e)
Aruncat daca s-a modificat dimensiunea
componentei
componentShown(ComponentEvent e)
Aruncat daca componenta a fost facuta

7
vizibila
Metode din interfata ContainerListener:
componentAdded(ContainerEvent e)
Aruncat cand s-a adaugat o componenta
pe container
componentRemoved(ContainerEvent e)
Aruncat cand a fost scoasa o componenta
de pe container

7.9 TextListener

Metoda textValueChanged(TextEvent ev) este suprascrisa pentru evenimentul invocat atunci cand in componenta text pe
care am atasat ascultatorul este modificat continutul; Pentru a executa instructiuni la modificarea continutului unei
componente text trebuie sa folosimt interfata TextListener si sa suprascriem metoda textValueChanged();

7.10 WindowAdapter si WindowEvent

WindowAdapter este clasa ce reuneste trei interfete ce contin metode referitoare la evenimentele pe ferestre;
Asemanatoare clasei MouseAdapter, cu ajutorul acestei clase putem suprascrie numai metodele de care avem nevoie atunci
cand folosim evenimente pe ferestre;
windowActivated(WindowEvent e)
Apelata la activarea unei ferestre
windowClosed(WindowEvent e)
Apelata la inchiderea unei ferestre
windowClosing(WindowEvent e)
Apelata in timpul procesului de
inchidere
windowDeactivated(WindowEvent e)
Apelata la dezactivarea unei
ferestre.
windowDeiconified(WindowEvent e)
Apelata la deiconificarea unei
ferestre
windowGainedFocus(WindowEvent e)
Apelata cand ferestra obtine
focusul;
windowIconified(WindowEvent e)
Apelata la iconificarea unei
ferestre
windowLostFocus(WindowEvent e)
Apelata atunci cand fereastra
pierde focusul

windowOpened(WindowEvent e)
Apelata la deschiderea ferestrei;

windowStateChanged(WindowEvent e)
Apelata la modificarea starii
ferestrei;

WindowEvent este evenimentul specific ferestrelor;


Pentru o fereastra se numeste stare de focus perisoada in care tastatura si combinatiile de taste se refera direct la acea
fereastra; Atunci cand tastatura nu se mai refera direct la fereastra ci la o alta compoenenta, se numeste ca fereastra "a
pierdut focusul";
O fereastra ese activa cand se poate lucra cu ea si inactiva atunci cand nu se poate lucra cu ea;
Iconificarea reprezinta scoaterea ferestrei din taskar, iar deiconificarea este operatiunea inversa;

8
9