Sunteți pe pagina 1din 13

Java 1 Modul 6

6.1 Ce este o interfata grafica?


Cu siguranta stiti deja ce este o interfata grafica. Pe numele ei GUI (Graphical User Interface), interfata grafica reprezinta un mod
elegant de interactiune a unui sistem cu utilizatorul. Pana acum toate aplicatiile software create de noi afisau mesaje sau primeau
informatie din consola. Consola reprezinta primul mod dezvoltat vreodata prin care un program afisa sau primea informatii de la utilizator.
Dupa cum deja ati vazut, in consola nu se lucreaza decat cu siruri de caractere, ele reprezentant atat datele de intrare (care trebuiesc
procesate de program) cat si datele de iesire (rezultatul executiei aplicatiei);
Consola este inca folosita si va ramane in continuare de o utilitate importanta pentru anumite tipuri de aplicatii. De exemplu aplicatiile
de tip server in general preiau informatie si o afisaza intr-o consola. Acest lucru se intampl deoarece acest mod de lucru permite pastrarea
neocupata si utilizarea de cat mai putina memorie interna (RAM); Serverul, care este o aplicatie ce ofera servicii printr-un proces daemon
(ce ruleaza constant pe o masina asteptand conexiuni de la clienti) nu are nevoie in principal de afisari de informatie pe computerul care
ruleaza. Singurele modificari care pot fi facute poate reprezinta configurarile si afisarea permanenta a statusului de executie; Pentru acest
lucru nu este nevoie de mai mult decat consola;
Totusi, pentru un utilizator neexperimentat (care nu lucreaza in domeniul IT), consola poate parea greoaie la utilizare. De aceea
intergata grafica este apreciata de majoritatea utilizatorilor de computere, devenind in unele cazuri chiar obiect comercial care determina
numarul de clienti (utilizatori); De exemplu in cazul Microsoft Windows, accentul s-a pus din ce in ce mai mult pe dezvoltarea unei interfete
grafice aspectuase in detrimentul vitezei de executie sau al resurselor folosite (memorie, procesor ... etc);
Interfata grafica este formata din imagini, text si componente care interactioneaza cu utilizatorul prin evenimente; Componentele
reprezinta entitati care interactioneaza cu utilizatorul: butoane, meniuri, scrollbars, ferestre, panouri ..etc. Orice aplicatie care este
destinata folosirii de catre persoane fara experienta in domeniu IT, dar care sa poata invata usor modul de utilizare al unei aplicatii trebuie
sa aiba ca mod de interactiune o interfata grafica.

6.2 Componente si modul de functionare


Componentele reprezinta entitatile prin care utilizatorul interactioneaza cu aplicatia. Din punctul de vedere al programaturului , orice
componenta este un obiect; Fiind obiecte, acestea sunt create fiecare cu ajutorul unei clase, avand atribute si comportamente;
Un aspect important al oricarei componente este urmatorul: Fiecare dintre acestea poate fi plasata pe un sistem de axe Cartezian. In
felul acesta componenta se afla cu originea in coltul din stanga sus, iar in jos si la dreapta axele cresc; Sistemul de masurare al interfetelor
grafice este in pixeli. Pixelul este cea mai mica unitate (indivizibila) de os singura culoare a unei imagini
Exemple de componente pe care le vom folosi:

applet

fereastra

buton

bara de meniu

meniu

item de meniu

buton de selectie checkbox

buton de selectie radio

panou

ferestra de dialog

bara de defilare (scrollbar)

eticheta

Componentele se divid in doua categorii: containere si non-containere; Containrerele sunt acele componente care pe interfata lor pot
sustine alte componente; De exemplu fereastra este un containter, deoarece pe ea vom amplasa diverese ale componente cum ar fi
butoane, meniuri ...etc;
Primele titpuri de interfete grafice pe care le vom crea sunt cu ajutorul java.awt.*;

6.3 Appleturile - java.applet


Appleturile reprezinta programe scrise cu Java. Acestea, spre deosebire de alte programe nu sunt de sine statatoare (nu au o metoda
main); Ele se folosesc de metoda principala a altor programe pentru a se executa (cel mai des, de un web browser); Appleturile sunt cele
mai simple aplicatii cu interfata grafica scrise cu Java. Pentru a dezvolta astfel de programe folosim clasa Applet din pachetul java.applet;
Un applet are definite doua metode pe care va trebui sa le suprasriem in vederea modificarii interfetei grafice a acestuia; Metodele sunt
definite in clasa Applet pe care va trebui sa o mosteneasca orice clasa care defineste un applet;
1.

paint(Grpagics g)

2.

init()

Metoda paint() va fi suprascrisa pentru a desena folosind diferite comportamentele ale obiectului Graphics pe interfata appletului;

Metoda init() va fi suprascrisa atunci cand trebuie sa adauga componente pe applet;


Aceste functii ale metodelor paint() si init() nu trebuiesc incurcate; In paint() nu pot fi adaugate componente asa cum in init() nu se
poate desena pe interfata appletului;
Clasa Graphics defineste uramtoarele comportamente cu ajutorul carora putem modifica interfata:

drawLine(int x1,int y1, int x2,int y2) - pentru desenarea unui segment de dreapta definit de punctele de coordonate A(x1,x2) si
B(y1,y2);

drawString(String line, int x,int y) - pentru desenarea unui sir de caractere la coordonarele x,y

drawRect(int x,int y, int l,int h) - pentru desenarea unui dreptunghi cu coltul stanga sus la coordonatele x,y si o anumita latime l si
inaltime h

drawOval(int x,int y, int l,int h) - pentru desenarea unei elipse perfect icadrata de dreptunghiul cu coordonatele date ca in metoda
drawRect

setColor(Color c) - pentru setarea unei culori de desenare

6.4 Definirea culorilor - clasa Color


Intr-un sistem digital culorile se definesc prin standardul aditiv RGB (Red Green Blue); Acest standard defineste culori prin amestecul
unor cantitati din fiecare dintre cele trei culori rosu, verde si albastru; Prin amestecul tuturor in cantintate maxima rezulta alb, iar prin
absenta completa a culorilor rezulta negru;
Fiecarei culori ii este rezervat un byte de informatie adica valori intre 0 si 255; Astfel o culoare poate fi reprezentata cu clasa Color prin
definirea instantelor cu urmatorul construcotor:

Color(int red,int green, int blue)

De exemplu: Color c1 = new Color(255,0,0); // defineste rosu aprins

Fiecare parametru poate lua valori intre 0 si 255, reprezentant cantitatile de culoare care se amesteca;
Exista posibilitatea de a defini culori cu transparenta; Pentru asta se foloseste construcotrul cu patru parametrii, ultimul reprezentand
transparenta care ia de asemenea valori intre 0 si 255;

Color(int red,int green,int blue,int alpha)

Culorile cunoscute sunt deja definite si reprezinta constante in clasa Color; Acestea pot fi accesate prin dereferentiere:

Color.red

Color.blue

Color.yellow

Color.green

Color.violet

Culorile se modifica pe o instanta Graphics prin metoda setColor();

g.setColor(Color.red) // prin folosirea constantei

g.setColor(new Color(200,100,0)) // prin definirea unei culori cu ajutorul unuia dintre constructori

6.5 Butoane - java.awt.Button


Cu ajutorul clasei Button din pachetul java.awt putem defini componente de tip buton;
Constructori:

Button()

Button(String s)

Exemple:

Button b1 = new Button();

Button b2 = new Button("Textul de pe buton");

Button b3= new Button(new String("Textul de pe buton"));

Adaugarea oricarei componente pe Applet se face cu metoda add(Component c) mostenita din clasa Applet;
Exemplu:
Button b = new Button("Butonul meu");add(b); // adaugarea butonului
Nu uitati ca adaugarea oricarei componente se face prin suprascrierea metodei init()

6.6 Manageri de positionare (Layout Managers)


Un manager de pozitionare reprezinta un obiect definit de o clasa care se ocupa de modul in care sunt aranjate compoentele pe un
container; (De exemplu putem defini un mangager de poziionare pentru a amplasa intr-un anumit fel un buton pe un applet);
Vom invata trei tipuri de manageri de pozitionare:
1.

FlowLayout

2.

BorderLayout

3.

GridLayout

FlowLayout este clasa ce pozitioneaza componentele la dreapta, la stanga sau centrat sus; BorderLayout ii pozitioneaza in functie de
marginea containerului, iar GridLayout in functie de un grid imaginar cu coodronate date la construire;
Orice manager se pozitionare se seteaza cu ajutorul metodei setLayout() mostenita din clasa Applet;
Exemplu: setLayout(new FlowLayout());
Clasa FlowLayout are constante care definesc locatia unde sunt aranjate componentele:

FlowLayout.LEFT

FlowLayout.CENTER

FlowLayout.RIGHT

Exemplu: setLayout(new FlowLayou(FlowLayout.LEFT))


Daca nu se precizeaza constanta, atunci ele sunt default setate CENTER;
Clasa BorderLayout are cinci constante care sunt specifice la adaugarea fiecarei componente; Managerul se seteaza setLayout(new
BorderLayout()) dupa care se specifica o constanta la adaugarea unei componente din cele 5:

BorderLayout.CENTER

BorderLayout.NORTH (pentru partea de sus)

BorderLayout.SOUTH (pentru partea de jos)

BorderLayout.WEST (pentru stanga)

BorderLayout.EAST (pentru dreapta)

Exemplu:
add(b, BorderLayout.NORTH) // unde b este un buton spre exemplu
Pentru GridLayout cosntrucotrul este GridLayout(int a,int b); a reprezinta numarul de linii si b numarul de coloane ale gridului; O
componeta se adauga dupa setarea gridului cu metoda add cu un singur parametru si va completa intotdeauna urmatoarea casuta libera a
gridului de la stanga la dreapta de sus in jos;

6.7 Panouri
Panourile sunt componente de tip container. Acestea sunt folosite in formatarea interfetei grafice prin adaugarea pe alte containere in
influenta diferitilor manageri de pozitionare; Clasa Panel din java.awt defineste aceste componente dupa constructorii:

Panel();

Panel(LayoutManaget lm)

6.8 Componente text


Componentele text sunt folosite pentru a-i permite utilizatorului sa introduca siruri de caractere; Exista doua tipuri de componente
text:

TextField (pentru texte de o singura linie)

TextArea (pentru texte pe mai multe linii)

Cele doua clase sunt parte a pachetului java.awt;


TextField se construieste:

TextField(int c) // c reprezinta dimensiunea in latime a textfield-ului

TextArea se construieste:

TextArea(int r,int c) // r,c reperezentand randurile si coloanele componentei text

Exemple:

TextArea ta = new TextArea(5,7);

TextField tf = new TextField(10);

Continutul campului text se poate lua cu ajutorul metodei:

getText() - care returneaza un String

Constinutul poate fi setat cu ajutorul setterului:

setText(String s)

Pentru TextArea se poate adauga text la continutul actual prin metoda append(String s);