Documente Academic
Documente Profesional
Documente Cultură
Lab5 mpl3
Lab5 mpl3
3. Breviar
Pe parcursul lucrrilor de laborator anterioare a fost prezentat limbajul de programare Java n
general, i n particular mediul integrat de dezvoltare NetBeans.
Actual, toate programele care sunt dezvoltate, indiferent de platform sau mediu de
programare, sunt dezvoltate ca aplicaii care comunic cu utilizatorul prin intermediul unor interfee
grafice. Altfel spus, actual se dezvolt puternice interfee grafice cu utilizatorul, pentru a veni n
sprijinul acestuia din urm n realizarea mult mai uoar a activitii pe care o desfoar.
Interfeele grafice cu utilizatorul (GUI Graphic User Interface) se pot dezvolta foarte uor
folosind limbajul de programare Java. Interfeele cu utilizatorul scrise n limbajul de programare Java
sunt foarte greu de construit deoarece programarea se face n acelai mod ca i n limbajul de
programare C, de exemplu, programatorul fiind nevoit s descrie fiecare obiect n parte pn la cel
mai mic detaliu al obiectului. De exemplu, pentru un buton, programatorul trebuie s specifice prin
linie de cod poziia obiectului pe form, dimensiunea acestuia, culoarea de fond, textul care apare
scris pe obiect, aciunile care se realizeaz la apsarea obiectului etc. Se poate observa c
specificarea tuturor acestor proprieti i evenimente asociate obiectului ar consuma foarte mult timp
dac ar fi scrise n linie de cod. Pentru a elimina acest neajuns al limbajului de programare Java, a
fost dezvoltat mediul integrat de dezvoltare NetBeans.
Mediul integrat de dezvoltare NetBeans, ca i orice alt mediu vizual de programare, are ca
principal scop dezvoltarea rapid de aplicaii grafice sau, altfel spus, interfee grafice cu utilizatorul
(GUI Graphic User Interface). Mediile vizuale permit dezvoltarea interfeelor grafice cu
utilizatorul n dou etape, i anume: etapa de dezvoltare grafic a interfeei i etapa de asociere a
aciunilor pentru fiecare eveniment asociat obiectelor plasate pe form.
java.sun.com
3.1.
Clasa JFrame
Clasa JFrame se afl n pachetul javax.swing. Dup instanierea clasei (vezi capitolul 4), se
poate ncepe dezvoltarea aplicaiei.
n funcie de dorinele programatorului sau de specificaiile aplicaiei, utliatorul poate alege
unul dintre managerii de layout prezentai anterior.
Fereastra de proprieti ale containerului se afl prezentat n figura 3.1, iar n figura 3.2 se
afl prezentate evenimente care pot fi asociate containerului i tipul de aciuni care s se execute la
apariia unui anumit eveniment.
Toate proprietile pot fi modificate fie din fereastra de proprieti, fie prin linie de cod. Dac
modificarea proprietilor prin linie de cod nu se realizeaz n cadrul constructorului clasei, atunci
modificrile vor fi realizate efectiv n timpul rulrii aplicaiei i nu la iniializarea ei.
3.2.
Clasa JButton
Clasa JButton se afl n pachetul javax.swing, ca i clasa JFrame. Aceast clas, Jbutton, are
ca instan un obiect de tip buton. Vizual, instana acestei clase este reprezentat sub forma unui
dreptunghi care are nscris pe el un ir de caractere. n funcie de dorina programatorului, acest
obiect va fi plasat pe form la coordonatele dorite de acesta, respectnd restriciile impuse de
managerul de layout folosit. Proprietile obiectului pot fi modificate, fie din fereastra de proprieti,
prezentat n figura 3.3, fie prin linie de cod folosind metodele specifice acestei clase. Obiectul
implementeaz o aciune de tipul actionListner, adic va avea loc o aciune dac s-a produs un
eveniment. Tipul de eveniment asociat obiectului poate diferi i n figura 3.4 sunt prezentate tipurile
de evenimente pe care le suport obiectul.
3.3.
Clasa JLabel
Instana clasei JLabel este o etichet. Aceasta are ca proprietate fundamental faptul c nu
poate fi modificat de utilizator, pe parcursul rulrii aplicaiei, prin simpla introducere a unui text de
la tastatur (aa cum va fi posibil la instana clasei JTextField sau la cea a clasei JTextFieldArea). O
etichet poate fi nscris cu un anumit text numai prin linie de cod. Acest lucru asigur o anumit
securitate, deoarece n aceste obiecte pot fi nscrise, de exemplu, mesaje critice pentru utilizator i pe
care acesta s nu aib drept s le modifice.
n continuare, vor fi prezentate ferestrele cu proprieti i evenimente ale unei instane a
clasei JLabel (figura 3.5 i 3.6).
4. Desfurarea lucrrii
n prim etap, lucrarea i propune s familiarizeze programatorul cu instanele claselor
menionate n partea teoretic. Astfel, vom construi o aplicaie care s aib ca obiectiv afiarea ntr-o
etichet a irului de caractere Hello! La apsarea unui buton.
Mai nti trebuie creat un proiect. Acest lucru se realizeaz prin selecia opiunii New Project
din meniul New. La selecia acestei opiuni, pe ecran va aprea o fereastr de dialog ca cea din figura
3.7.
Dup alegerea categoriei de proiect General i apoi a tipului de proiect, Java Application, se
va executa click pe butonul Next>, astfel nct pe ecran va aprea o fereastr de dialog, ca cea din
figura 3.8, n care programatorul trebuie s introduc un nume pentru proiect, precum i s modifice
cile de creare i acces pentru proiectul respectiv. Este indicat ca cile s nu fie schimbate, opiunea
de setare ca proiect principal s fie mereu setat, iar opiunea de creare a clasei main s fie
deselectat.
Dup apsarea butonului Finish, mediul integrat Netbeans va crea automat toate directoarele
i fiierele bunei funcionri a aplicaiei. n figura 3.9 este prezentat fereastra proiectelor create de
programator.
Pentru a crea o nou instan a clasei JFrame, utilizatorul va trebui s execute click dreapta
pe pachetul <default package>, dup care trebuie s selecteze opiunea New i apoi opiunea JFrame
Form. Aceti pai sunt artai n figura 3.10.
Dup selectarea opiunii, aa cum prezint figura 3.10, va fi deschis o fereastr de dialog n
care utilizatorul trebuie s introduc un nume pentru noua instan. Aceast fereastr este prezentat
n figura 3.11.
Aa cum se poate observa din figura 3.11, n josul ferestrei de dialog apare un mesaj de
atenionare. Acest mesaj specific faptul c este recomandat ca n pachetul implicit <default
package> s nu fie incluse clase. De aceea, programatorul trebuie s schimbe numele pachetului
implicit cu un altul. Este recomandat ca acest pachet s fie redefinit cu numele proiectului. Acest
lucru se realizeaz prin click dreapta pe pachet, selectarea opiunii Refractor i apoi Rename sau prin
secvena de taste Alt + Shift + R. n urma acestei operaii, pe ecran va apare o fereastr de dialog ca
cea din figura 3.13.
Dup introducerea noului nume n caseta text aferent, este indicat ca programatorul s
selecteze opiunea Apply Rename on Comments, iar dup aceea s execute click stnga pe butonul
Next>. n urma acestei operaii n partea de jos a ferestrelor mediului integrat de dezvoltare
NetBeans va apare o fereastr, numit Refractoring, n care sunt specificate fiierele, pachetele,
9
clasele i obiectele asupra crora va fi efectuat operaia de redenumire. Prin apsarea butonului Do
Refractoring, va lansa n execuie procesul de redenumire.
10
Tot n cadrul acestui tab, din fereastra Events, se execut click pe pe butonul care are
inscripionat pe el trei puncte din dreptul evenimentului actionPerformed (eveniment de tip aciune
n urma apsrii). Dup ce a fost apsat butonul respectiv, pe ecran va apare fereastra de gestiune a
rutinelor de tratare a evenimentelor, handlere, n care se va aduga, prin intermediul butonului Add,
numele metodei n care se va implementa aciunea respectiv. Astfel, vom numi metoda respectiv
Inc. Dup ce a fost introdu textul i s-a apsat butonul OK, se va genera automat n fiier antetul
metodei respective.
11
n cadrul rutinei Inc, vom dori s afiam n obiectul de tip etichet textul Hello! la apsarea
butonului. n acest sens se va folosi metoda setText( ) a obiectului jLabel1 astfel:
jLabel1.setText(Hello!);
12
Dup ce a fost adugat aceast linie n cadrul rutinei Inc, se va apsa tasta cu funcii speciale
F6 sau butonul Run. Fereastra aplicaiei nainte i dup apsarea butonului este prezentat n figura
3.17 a i b.
n general, nu se dorete ca punctul de start al unei aplicaii s fie unul de tipul celui prezentat
n figura 3.17.a. Afiarea implicit a numelui obiectului n etichet este neadecvat n contextul
dezvoltrii de aplicaii grafice cu utilizatorul. Astfel, va trebui s adugm o linie de cod n care s
modificm textul care apare n etichet la rularea aplicaiei. Pentru acest lucru, vom aduga n
constructor, dup linia n care se iniializeaz componentele urmtoarea instruciune:
jLabel1.setText();
care va avea ca efect afiarea irului vid n etichet.
Tot n acest context, se poate observa c fereastra aplicaiei nu prezint niciun titlu. Este
indicat ca o fereastr a unei aplicaii s aibe i un titlu sugestiv. n cazul nostru, titlul ar putea fi, de
exemplu, Afiseaza Hello!. n figura 3.18 este prezentat fereastra aplicaiei.
setare direct n fereastra de proprieti a instanei clasei JFrame. n continuare, se va mai aduga un
buton pe care se va gsi textul i care va avea asociat handlerul Dec (i care are drept scop
decrementarea contorului i apoi afiarea sa n obiectul de tip etichet).
Fereastra aplicaiei de incrementare/decrementare a uni contor este prezentat n figura 3.19.
14