Sunteți pe pagina 1din 14

LUCRAREA 3

Utilizarea claselor de interfa SWING


1. Obiectivele lucrrii
9
nsuirea noiunilor de baz referitoare la componentele SWING;
9
nsuirea noiunilor de baz referitoare la clasele JFrame, JButton, JEdit;
9
nsuirea caracteristicilor particulare ale fiecrei clase n parte;
9
Construirea unei interfee cu utilizatorul care are ca obiectiv incrementarea i
decrementarea unui contor.

2. Aparatura i suporturile utilizate


PC n configuraia unitate central, monitor, tastatur;
Precizrile din prezentul ndrumar;
Manualul utilizatorului limbajului de programare JAVA;
Mediul de dezvoltare integrat NetBeans;
Documentaie on-line pe siteul http:\\java.sun.com.

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.

Lucrarea 3 Utilizarea claselor de interfa SWING

n etapa de dezvoltare grafic a interfeei utilizatorul folosete un principiu propriu mediilor


vizuale de programare, i anume principiul Drag and Drop. Conform acestui principiu, utilizatorul va
plasa obiectele pe form prin tragerea lor din paleta de obiecte direct pe aceasta. Astfel se pot
construi aplicaii grafice foarte rapid.
n procesul de dezvoltare al aplicaiilor, construirea interfeei grafice numai prin realizarea
primei etape nu este suficient. Dac programatorul realizeaz numai construirea interfeei grafice, la
rularea aplicaiei va apare doar forma pe care sunt plasate obiectele, fr ca aceste obiecte s aibe
asociate aciuni. Aadar, procesul de dezvoltare al interfeelor grafice cu utilizatorul trebuie s fie
compus din dou subrocese, i anume: procesul de construire al interfeei grafice propriu-zise i
procesul de asociere a aciunilor care trebuie s aibe loc pentru fiecare eveniment asociat diverselor
obiecte. Altfel spus, doar plasarea obiectelor pe form nu ar avea sens, dac obiectelor nu le sunt
asociate evenimente care produc anumite aciuni, care trebuie s fie descrise prin linii de cod.
Conform celor menionate n paragraful anterior, se definesc, pentru mediile vizuale de
programare, dou concepte, i anume: Event Driven i Time Driven. Conceptul Event Driven
(aciune n urma unui anumit eveniment aprut) se implementeaz prin asociere la obiectele folosite
a anumitor aciuni care s fie ndeplinite de acestea la apariia unor evenimente. De exemplu, la
apsarea unui buton s se realizeze incrementarea unui contor. Acest lucru se realizeaz prin scrierea
de cod n metoda de tratare a evenimentului respectiv. Paii care trebuie urmai pentru a realiza acest
lucru vor fi descrii n capitolul 4 al prezentei lucrri.
Conceptul Time Driven (aciune la un anumit moment de timp) se implementeaz exclusiv
prin linie de cod n fereastra de editare i presupune realizarea unei sau a mai multor aciuni la
momente bine precizate de timp. Acest concept, va fi discutat n detaliu n urmtoarele lucrei de
laborator.
Se pot combina cele dou concepte, obinndu-se astfel realizarea unor aciuni riguros
determinate att de evenimente produse de utilizator, ct i de momente de timp bine stabilite. Pe
baza combinaiei celor dou concepte se construiesc aplicaiile de timp real.
Interfeele grafice cu utilizatorul, se pot construi, sub maina virtual Java, se pot construi fie
ca aplicaii de sine stttoare, fie ca aplicaii care ruleaz ntr-un browser. Datorit acestui fapt,
programatorului i sunt puse la dispoziie dou tipuri de componente, i anume: componentele
SWING i componentele AWT. Componentele SWING sunt obiecte native Java care au ca i
caracteristic principal un feeling foarte plcut (cald). Componentele AWT sunt componente
clasice, care se pot gsi n orice mediu vizual de programare. Dezavantajul lor este acela c
feelingul pe care l prezint nu este att de plcut ca i cel al componentelor SWING, dar i faptul
c sunt mult mai puine dect celelalte. Despre componentele AWT se va discuta n lucrrile
urmtoare.
Atunci cnd se construiesc interfee grafice, prima grij a programatorului este containerul pe
care se va plasa obiectele componente ale interfeei. Acest container este gestionat de ctre un
manager de layout. Acest manager de layout are ca principal sarcin dispunerea obiectelor selectate
de ctre utilizator n cadrul containerului. Managerii de layout care sunt cel mai frecvent utilizai
sunt: Free Design (implicit), AbsoluteLayout, BorderLayout, BoxLayout, CardLayout, FlowLayout,
GridLayout, GridBagLayout, NullLayout1.
n continuare, vor fi prezentate trei clase ale cror instane constituie componente SWING, i
anume: clasa JFrame (are ca instan o form, care constituie baz pentru obiectele ce vor fi plasate
pe aceasta i care constituie primul obiect care apare pe ecran la rularea aplicaiei. Clasa JFrame
constituie un container), JLabel (are ca instan o etichet) i JButton (are ca instan un buton).

java.sun.com

Medii de programare ndrumar de laborator

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.

Figura 3.1 Fereastra de proprieti ale containerului

Figura 3.2 Fereastra cu evenimente ale containerului

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.

Lucrarea 3 Utilizarea claselor de interfa SWING

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.

Figura 3.3.a Fereastra cu proprieti

Figura 3.3.b ferastra cu proprieti (continuare)

Medii de programare ndrumar de laborator

Figura 3.4 Fereastra cu evenimente

n continuare vor fi prezentate principalele metode implementate n clasa JButton:


9 jButton1.setAlignmentX(float aliniere) i jButton1.getAlignment() seteaz, respectiv
ntoarce, valoarea coordonatei X pe care se afl butonul pe form. Valoarea ntoars de metoda
getAlignment() este o valoare real;
9 jButton1.setAlignmentY(float aliniere) i jButton1.getAlignment() au aceleai funcii ca i
metodele de aliniere dup coordonata X;
9 jButton1.setBackground(Color bg) i jButton1.getBackground() seteaz, respectiv ntoarce,
culoarea de fond a butonului, aa cum va aprea la rularea aplicaiei;
9 jButton1.setEnabled(boolean b) are ca efect activarea sau dezactivarea butonului, n funcie
de valoarea pe care o ia argumentul logic b;
9 jButton1.setFont(Font font) i jButton1.getFont() seteaz, respectiv ntoarce, fontul care se
va folosi, respectiv a fost folosit, pentru a fi afiat textul care nsoete butonul;
9 jButton1.setForeground(Color fg) i jButton1.getForeground() seteaz, respectiv ntoarce,
culoarea textului care nsoete butonul;
9 jButton1.setLocation(int x, int y) i jButton1.getLocation() seteaz, respectiv ntoarce,
valorile coordonatelor x i y la care se va poziiona, respectiv la care se afl poziionat, colul stnga
sus al butonului;
5

Lucrarea 3 Utilizarea claselor de interfa SWING

9 jButton1.setText(String text) i jButton1.getText() seteaz, respectiv ntoarce, textul care va


fi afiat, respectiv care este afiat, pe buton;
9 jButton1.setVisible(boolean aflag) are ca efect setarea proprietii de vizibilitate sau
invizibilitate a butonului, n funcie de valoarea pe care o ia argumentul aflag. Dac metoda
setEnabled(boolean b) avea ca efect inaccesibilitatea butonului pentru utilizator, metoda
setVisible(boolean true) va avea ca efect tergerea logic a butonului de pe form. Altfel spus,
aceast metod va ascunde butonul respectiv, astfel nct utilizatorul nu l mai poate vedea pe form
pn cnd acesta nu este fcut vizibil din alt metod sau clas.
Dup ce au fost setate proprietile principale ale obiectului, se trece la implementarea
aciunilor care se vor executa atunci cnd are loc un anumit eveniment. Acest lucru se face prin
introducerea unor rutine de tratare a evenimentelor, numite i handlere, i care sunt proprii fiecrui
tip de eveniment n parte. Aceste rutine de tratare a evenimentelor vor fi plasate n codul surs
automat de mediul integrat de dezvoltare NetBeans dup ce a fost asociat un nume pentru aceste
rutine.
Cel mai important tip de eveniment care se folosete pentru obiectele de tip buton este
actionPerformed, adic aciune n urma apsrii butonului.
O clas asemntoare cu clasa JButton este clasa JToogleButton, a crei instan este un
buton care atunci cnd este apsat el rmne armat pn la o nou apsare.

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).

Figura 3.5. Fereastra cu proprieti

Figura 3.6. Fereastra cu evenimente

Medii de programare ndrumar de laborator

n continuare vor fi prezentate principalele metode implementate n clasa JLabel:


9 jLabel1.setAlignmentX(float aliniere) i jLabel1.getAlignment() seteaz, respectiv
ntoarce, valoarea coordonatei X pe care se afl eticheta pe form. Valoarea ntoars de metoda
getAlignment() este o valoare real;
9 jLabel1.setAlignmentY(float aliniere) i jLabel1.getAlignment() au aceleai funcii ca i
metodele de aliniere dup coordonata X;
9 jLabel1.setBackground(Color bg) i jLabel1.getBackground() seteaz, respectiv ntoarce,
culoarea de fond a etichetei, aa cum va aprea la rularea aplicaiei;
9 jLabel1.setEnabled(boolean b) are ca efect activarea sau dezactivarea etichetei, n funcie de
valoarea pe care o ia argumentul logic b;
9 jLabel1.setFont(Font font) i jLabel1.getFont() seteaz, respectiv ntoarce, fontul care se va
folosi, respectiv a fost folosit, pentru a fi afiat textul n etichet;
9 jLabel1.setForeground(Color fg) i jLabel1.getForeground() seteaz, respectiv ntoarce,
culoarea textului care este, respectiv va fi afiat, n etichet;
9 jLabel1.setLocation(int x, int y) i jLabel1.getLocation() seteaz, respectiv ntoarce,
valorile coordonatelor x i y la care se va poziiona, respectiv la care se afl poziionat, colul stnga
sus al etichetei;
9 jLabel1.setText(String text) i jLabel1.getText() seteaz, respectiv ntoarce, textul care va fi
afiat, respectiv care este afiat, n interiorul etichetei;
9 jLabel1.setVisible(boolean aflag) are ca efect setarea proprietii de vizibilitate sau de
invizibilitate a etichetei, n funcie de valoarea pe care o ia argumentul aflag. Dac metoda
setEnabled(boolean b) avea ca efect inaccesibilitatea etichetei pentru utilizator, metoda
setVisible(boolean true) va avea ca efect tergerea logic a etichetei de pe form. Altfel spus,
aceast metod va ascunde eticheta respectiv, astfel nct utilizatorul nu o mai poate vedea pe form
pn cnd aceasta nu este fcut vizibil din alt metod sau clas.
n cazul clasei JButton puteau asocia diverse evenimente, dintre care cel mai important tip de
eveniment era apsarea butonului, la clasa JLabel nu se mai poate pune cazul unui asemenea tip de
eveniment. Se poat ns asocia alte diferite evenimente, ca i n cazul butonului, cum ar fi:
executarea unui click cu mouseul pe obiect, tastarea unei anumite taste, mutarea etichetei cu ajutirul
mouseului etc. Se recomand ca acestui tip de obiect s nu i fie asociat niciun fel de eveniment.

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.

Figura 3.7. Fereastra de alegere a tipului de proiect dorit

Lucrarea 3 Utilizarea claselor de interfa SWING

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.

Figura 3.8. Fereastra de setare a parametrilor proiectului

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.

Figura 3.9. 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.

Figura 3.10. Crearea unei noi instane a clasei JFrame

Medii de programare ndrumar de laborator

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.

Figura 3.11 Fereastra cu parametrii formei

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.

Figura 3.13. Fereastra de redenumire

Figura 3.12. Selectarea opiunii Rename

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

Lucrarea 3 Utilizarea claselor de interfa SWING

clasele i obiectele asupra crora va fi efectuat operaia de redenumire. Prin apsarea butonului Do
Refractoring, va lansa n execuie procesul de redenumire.

Figura 3.14. Fereastra Refractoring

n acest moment, programatorul poate fi sigur c au fost respectate toate precizrile i


restriciile impuse de mediul Java Development Kitt 1.4 i astfel se poate ncepe dezvoltarea
aplicaiei.
n partea teoretic a fost menionat c procesul de dezvoltare a aplicaiilor este compus din
alte dou procese. Se poate observa c n fereastra de editare, fiierul forma.java, care reprezint
clasa derivat din clasa JFrame, este divizat n dou taburi, i anume: Design, care reprezint partea
grafic a aplicaiei, aa cum va apare ea la rulare i pe care se poate construi structura grafic
aplicaiei, i Source, n care programatorul va scrie cod pentru a implementa diferite aciuni i
comportamente ale obiectelor plasate pe form.
Atunci cnd programatorul se afl n tabul Design, acesta va avea puse la dispoziie n partea
dreapt dou ferestre, i anume: paleta cu componente, din care conform principiului Drag and Drop
se vor plasa obiectele necesare pe form, i fereastra cu proprieti, evenimente i cod, cu ajutorul
creia se pot selecta diferite proprieti de pre-iniializare, precum i asocierea rutinelor de tratare a
evenimentelor, handlere, pentru diferite tiprui de evenimente.
n tabul Source, se afl fiierul tamplate care va fi deschis ori de cte ori se va crea un nou
proiect de tipul prezentat anterior. Acest fiier este completat automat cu numele formei, precum i
cu codul de asociat formei i tuturor componentelor care se afl pe aceasta. Trebuie menionat c
editorul mediului integrat de dezvoltare NetBeans, va completa automat, n partea de generare
automat a codului, codul asociat crerii i de setare a proprietilor obiectelor plasate pe form de
dezvoltator.
n continuare se va prezenta tabul Design. Pe form se va plasa un obiect de tip etichet i un
obiect de tip buton. Pe buton, implicit, va apare numele acesuita, i anume jButton1. Dorim, ns s
apar un alt text, i anume Apasa. Acest lucru se realizeaz prin executarea unui dublu click stnga
pe obiect i introducerea noului text. n figura 3.15 este prezentat structura vizual a aplicaiei, aa
cum trebuie s apar la rulare.

Figura 3.15 Tabul Design

10

Medii de programare ndrumar de laborator

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.

Figura 3.16 Fereastra handlerelor

n continuare se va prezenta listingul fiierului forma.java. Acest listing se gsete n


fereastra de editare, cu acelai titlu ca i fiierul, n cadrul tabului Source.
package aplicatie1;
/*
* forma.java
*
* Created on 23 octombrie 2006, 10:22
*/
/**
*
* @author Administrator
*/
public class forma extends javax.swing.JFrame { //antetul clasei
/** Creates new form forma */
public forma() {
//constructorul clasei
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setText("jLabel1");

11

Lucrarea 3 Utilizarea claselor de interfa SWING


jButton1.setText("Apasa");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Inc(evt);
}
});
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.add(48, 48, 48)
.add(jLabel1))
.add(layout.createSequentialGroup()
.add(34, 34, 34)
.add(jButton1)))
.addContainerGap(301, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(jLabel1)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(jButton1)
.addContainerGap(246, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void Inc(java.awt.event.ActionEvent evt) { //antetul funciei de tratare a evenimentului
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) { //metoda care va lansa aplicaia
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new forma().setVisible(true);
}
});
}
// Variables declaration do not modify
private javax.swing.Jbutton jButton1;
private javax.swing.JLabel jLabel1;
// End of variables declaration
}

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

Medii de programare ndrumar de laborator

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.

a nainte de apsarea butonului


b Dup apsarea butonului
Figura 3.17 Fereastra aplicaiei la rulare

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.

Figura 3.18 Fereastra aplicaiei

n continuare, dorim s construim o aplicaie care incrementeaz i decrementeaz un contor.


Acest contor va fi iniializat cu o valoare dorit de programator. Pentru a realiza acest lucru, vom
completa forma definit mai sus dup cum urmeaz: butonului jButton1 i se va schimba textul n +,
formei i se va schimba titlul n Incrementare/decrementare contor. Acest lucru se realizeaz prin
13

Lucrarea 3 Utilizarea claselor de interfa SWING

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.

Figura 3.19 Fereastra aplicaiei de incrementare/decrementare a unui contor

14

S-ar putea să vă placă și