Curs 8 Slides

26
CREAREA DE INTERFETE GRAFICE PENTRU APPLETURI Curs 8 - Java

description

uygfhgfhgf

Transcript of Curs 8 Slides

  • CREAREA DE INTERFETE GRAFICE PENTRU APPLETURI

    Curs 8 - Java

  • Curs 8 - Java

    Deoarece Java este un limbaj independent de platforma, AWT ofera modalitatea de a proiecta o interfata care sa fie la fel reprezentata si cu aceleasi caracteristici pe orice sistem pe care ar rula. Folosind pachetul AWT avem de luat in calcul mai multe elemente care compun o interfata grafica: - componente - orice element poate fi practic plasat pe o interfata utilizator:

    butoane, liste derulante, meniuri popup, casete de validare sau campuri de text.

    - containere - acestea reprezinta de fapt componente care pot contine la randul lor alte componente. Un exemplu de container este chiar fereastra Applet, iar alte exemple ar putea fi panouri, casete de dialog sau ferestre independente.

    - administratori de dispunere - acestia sunt de fapt niste obiecte care definesc modul de dispunere a componentelor intr-un container. Un astfel de administrator nu este un element propriu-zis vizual, nu vedem pe ecran un astfel de obiect, efectele sale sunt insa vizibile.

  • Curs 8 - Java

    Exista doi pasi care trebuie urmati pentru a adauga o componenta la un container: - crearea componentei respective - apelarea metodei add() a containerului pentru componenta respectiva Datorita faptului ca un Applet este un container putem folosi metoda add() in cadrul unui applet pentru a adauga o componenta direct in fereastra Applet.

    ADAUGAREA DE COMPONENTE LA UN CONTAINER

    Ex. Button butonNou=new Button("Apasa aici"); add(butonNou);

  • Curs 8 - Java

    Adaugarea componentei nu duce automat si la desenarea ei pe ecran. Ea va fi afisata doar dupa apelul metodei paint() a containerului; putem folosi si metoda repaint() pentru a forta afisarea unor noi componente eventual adaugate. Pentru crearea componentelor in applet, in mod uzual, se foloseste metoda init(). In exemplul urmator avem un buton in cadrul unui applet, acest buton are un text afisat pe el si va fi afisat propriu-zis doar dupa apelarea metodei paint():

    ADAUGAREA DE COMPONENTE LA UN CONTAINER

    import java.awt.*; public class Buton extends java.applet.Applet { String mesaj="Numele butonului. Nu apasati"; Button butonNou=new Button(mesaj); public void init() { add(butonNou); } }

  • Curs 8 - Java

    O eticheta este de fapt cea mai simplista componenta a unei interfete grafice, ea fiind implementata prin clasa Label. Folosirea etichetelor pentru text apare in locul metodei drawString() din mai multe cauze: - o eticheta este desenata automat si nu are nevoie de tratare explicita de catre

    metoda paint() - etichetele pot fi dispuse in fereastra conform cu administratorii de dispunere

    folositi si nu este nevoie de o pozitionare prin coordonate date in pixeli

    ETICHETE

    Pentru a crea o eticheta putem folosi mai multe metode: - Label() - aceasta instructiune creaza o eticheta goala, cu textul aliniat automat la

    stanga - Label(sir) - creaza o eticheta cu textul specificat prin variabila de tip String,

    alinierea textului fiind la stanga - Label(sir,argument) - creaza o eticheta cu sirul dat ca text si cu alinierea indicata de

    argumentul al doilea Pentru a seta alinierea se pot folosi variabilele de clasa: Label.RIGHT, Label.LEFT si Label.CENTER.

  • Curs 8 - Java

    Pentru a modifica textul etichetei dupa crearea acesteia putem folosi metoda setText(sir); noul sir dat ca parametru este afisat dupa reimprospatarea componentei. O alta metoda folositoare este si getText() care ne returneaza valoarea textului etichetei.

    ETICHETE

    import java.awt.*; public class Etichete extends java.applet.Applet { Label stanga=new Label("Aliniat la stanga"); Label dreapta=new Label("Aliniat la dreapta",Label.RIGHT); Label centrat=new Label("Aliniat pe centru",Label.CENTER); Font f=new Font("Helvetica",Font.BOLD,18); GridLayout dispunere=new GridLayout(3,1); public void init() { setFont(f); setLayout(dispunere); add(stanga); setForeground(Color.green); add(centrat); setForeground(Color.blue); add(dreapta); } }

  • Curs 8 - Java

    Pentru a crea un buton trebuie sa urmam una dintre caile urmatoare: fie apelam constructorul Button() care ne creaza un buton fara nici un text fie apelam constructorul cu un argument de tip String care este de fapt chiar textul butonului. Odata creat acest buton ii mai putem modifica textul cu ajutorul metodei setLabel() sau putem folosi metoda getLabel() pentru a afla textul acestui buton.

    BUTOANE

    import java.awt.*; public class Casetofon extends java.applet.Applet { Button inapoi=new Button("Inapoi"); Button inainte=new Button("Inainte"); Button play=new Button("Play"); Button stop=new Button("Stop"); Button pauza=new Button("Pauza"); public void init() { add(inapoi); add(inainte); add(pauza); add(stop); add(play); } }

  • Curs 8 - Java

    Aceste componente sunt in practica niste casete patrate care pot fi bifate sau nu cu ajutorul unui clic. Pentru a crea o caseta de validare neexclusiva putem folosi unul dintre urmatorii constructori: - Checkbox() - care creaza o caseta de validare fara eticheta si nevalidata (nebifata) - Checkbox(sir) - care creaza o caseta de validare cu eticheta fiind sirul dat ca

    parametru si nevalidata

    Odata creat un obiect Checkbox se foloseste metoda setState(boolean) pentru a modifica starea acestuia: valoarea true pentru a bifa caseta si valoarea false pentru a debifa caseta de validare. Metoda getState() returneaza o valoare Boolean care ne indica starea de validare a casetei la momentul respectiv.

    CASETE DE VALIDARE

  • Curs 8 - Java

    CASETE DE VALIDARE

    import java.awt.*; public class Bifare extends java.applet.Applet { Checkbox caseta1=new Checkbox("Volvo"); Checkbox caseta2=new Checkbox("BMW"); Checkbox caseta3=new Checkbox("Mercedes"); Checkbox caseta4=new Checkbox("Audi"); Checkbox caseta5=new Checkbox("Dacia"); public void init() { add(caseta1); add(caseta2); add(caseta3); add(caseta4); add(caseta5); caseta5.setState(true); } }

  • Curs 8 - Java

    In cazul in care dorim sa grupam mai multe casete de validare intr-un grup, pentru a realiza niste butoane radio vom crea un obiect CheckboxGroup: CheckboxGroup grup=new CheckboxGroup(); Pentru a crea o caseta de validare care apartine unui grup vom folosi o instructiune de genul: Checkbox(sir,grupCaseteValidare,boolean); In cazul in care vrem sa modificam starea de validare a unui buton radio dintr-un grup putem folosi metoda setCurrent(validare). Putem folosi si metoda getCurrent() pentru a intoarce valoarea curenta de bifare a unei casete de validare. Obs: Checkbox(sir,grupCaseteValidare,boolean) se poate inlocui cu Checkbox(sir,boolean,grupCaseteValidare)

    CASETE DE VALIDARE

  • Curs 8 - Java

    CASETE DE VALIDARE

    import java.awt.*; public class Bifare extends java.applet.Applet { CheckboxGroup grup=new CheckboxGroup(); Checkbox caseta1=new Checkbox("Volvo",grup,false); Checkbox caseta2=new Checkbox("BMW",grup,false); Checkbox caseta3=new Checkbox("Mercedes",grup,true); Checkbox caseta4=new Checkbox("Audi",grup,false); Checkbox caseta5=new Checkbox("Dacia",grup,false); public void init() { add(caseta1); add(caseta2); add(caseta3); add(caseta4); add(caseta5); } }

  • Curs 8 - Java

    Acestea sunt create cu ajutorul clasei Choice si permit alegerea unei singure optiuni dintr-o lista derulanta pe verticala. Pentru a crea o astfel de lista trebuie mai intai sa cream un obiect Choice care va pastra lista propriu-zisa: Choice lista=new Choice(); Elementele listei se adauga la aceasta prin metoda addItem(sir) a obiectului de tip Choice. Metoda addItem() poate fi folosita si dupa ce lista noastra a fost deja adaugata la un container. Obs: Metoda addItem() se poate inlocui cu metoda add() a clasei Choice.

    LISTE DE OPTIUNI

  • Curs 8 - Java

    import java.awt.*; public class ListaSelectie extends java.applet.Applet { Choice lista=new Choice(); Label eticheta=new Label(Care echipa credeti ca va castiga Europa League in 2012:"); public void init() { add(eticheta); lista.addItem("Manchester City"); lista.addItem("Manchester United"); lista.addItem("Schalke 04"); lista.addItem("Steaua Bucuresti"); add(lista); } }

    LISTE DE OPTIUNI

  • Curs 8 - Java

    In cadrul clasei Choice exista mai multe metode folositoare pentru controlul asupra unei liste de selectie: - getItem(int) - aceasta metoda returneaza textul optiunii din pozitia specificata de

    argumentul intreg, prima optiune avand pozitia 0 - countItems() - intoarce numarul de elemente ale listei - getSelectedIndex() - intoarce pozitia elementului care este selectat la acel moment - getSelectedItem() - intoarce textul elementului selectat la acel moment - select(int) - selecteaza elementul aflat pe pozitia specificata de argument - select(String) - selecteaza primul element din lista care are sirul dat ca parametru

    drept text

    LISTE DE OPTIUNI

  • Curs 8 - Java

    Campurile de text dau posibilitatea utilizatorului sa poata introduce propriul text in program. Aceste componente ale interfetei sunt implementate cu ajutorul clasei TextField. Pentru a crea un camp de text putem folosi una dintre urmatoarele patru variante: - TextField() - va crea un camp gol si fara o latime specificata - TextField(int) - va crea un camp gol care are o latime pentru a afisa un numar de

    caractere specificat de argumentul intreg - TextField(String) - creaza un camp de text completat cu sirul dat ca parametru - TextField(String,int) - creaza un camp completat cu sirul dat ca parametru si cu

    latimea data de argumentul intreg

    CAMPURI DE TEXT

  • Curs 8 - Java

    In cazul in care vrem ca textul introdus de la tastatura de utilizator sa nu fie vizibil in clar - de exemplu in cazul parolelor - putem folosi o metoda numita setEchoChar(char) care va primi ca argument un caracter ce trebuie inclus intre apostroafe (de exemplu: '@'). Clasa TextField are si ea cateva metode foarte des folosite pentru a controla campurile de text: - getText() - returneaza textul continut de camp - setText(String) - completeaza campul de text cu sirul specificat ca argument - setEditable(boolean) - determina daca respectivul camp de text poate fi sau nu

    modificat de utilizator. Argumentul false duce la blocarea campului pentru introducerea de text iar argumentul true permite introducerea de text din partea utilizatorului

    - isEditable() - returneaza starea unui camp de text printr-o valoare booleana; daca respectivul camp de text poate fi editat va returna true iar daca nu este editabil va returna false

    CAMPURI DE TEXT

  • Curs 8 - Java

    import java.awt.*; public class CampuriText extends java.applet.Applet { Label eticheta1=new Label("Nume: "); TextField nume=new TextField(30); Label eticheta2=new Label("Prenume: "); TextField prenume=new TextField(30); Label eticheta3=new Label("Parola: "); TextField parola=new TextField(30); public void init() { add(eticheta1); add(nume); add(eticheta2); add(prenume); add(eticheta3); parola.setEchoChar('@'); add(parola); } }

    CAMPURI DE TEXT

  • Curs 8 - Java

    Pentru a crea o zona de text trebuie sa folosim unul dintre cei patru constructori de mai jos: - TextArea() - creaza o zona de text goala cu inaltime si latime nespecificate - TextArea(int,int) - creaza o zona goala care contine numarul de linii dat de primul

    argument si are latimea data de numarul de caractere care este specificat de cel de-al doilea argument intreg

    - TextArea(String) - creaza o zona de text care contine sirul dat ca argument - TextArea(String,int,int) - creaza o zona de text care contine sirul dat ca argument,

    numarul de linii dat de primul argument intreg si lungimea unei linii de atatea caractere cat reprezinta al doilea argument intreg

    Zonele de text poseda si ele unele metode proprii foarte utile: - insert(String,int) - insereaza sirul dat ca parametru la pozitia data de argumentul

    intreg; prima valoare a indexului este 0. - replace(String,int) - inlocuieste textul de la pozitia indicata de argumentul intreg cu

    sirul dat ca prim argument.

    ZONE DE TEXT

  • Curs 8 - Java

    import java.awt.*; public class ZonaText extends java.applet.Applet { String sir="Text introdus pentru a arata modalitatea de a introduce \ntext predefinit in cadrul unei zone de text create in limbajul Java."; TextArea zona; public void init() { zona=new TextArea(sir,10,70); add(zona); } }

    ZONE DE TEXT

    Clasa TextArea poseda si metodele setText(), getText(), setEditable() si isEditable().

  • Curs 8 - Java

    Aceste componente sunt create cu ajutorul clasei List si sunt asemanatoare cu listele de optiuni avand de fapt doar doua diferente majore: - o lista derulanta poate fi configurata astfel incat sa poata fi selectate mai multe

    optiuni - aceste liste se prezinta ca o zona de text in care sunt afisate mai multe optiuni iar

    daca lista contine mai multe optiuni decat pot fi afisate atunci apare bara de scroll Lista derulanta este definita prin crearea unui obiect List la care apoi se adauga elementele propriu-zise ale listei. Pentru a realiza acest lucru putem folosi unul dintre constructorii de mai jos: - List() - creaza o lista vida care permite o selectie unica de element - List(int, boolean) - creaza o lista derulanta care are un numar de elemente vizibile

    la un moment dat specificat prin argumentul intreg iar argumentul boolean indica daca pot fi selectate mai multe optiuni - in cazul posibilitatii selectarii mai multor optiuni argumentul trebuie sa aiba valoarea true

    Odata creat un obiect List ii folosim metoda add(String) pentru a adauga elemente la acest obiect.

    LISTE DERULANTE

  • Curs 8 - Java

    Ca si in cazul celorlalte componente si listele derulante au cateva metode des utilizate in conjunctie cu ele: - metodele getItem(int), countItems(), getSelectedIndex(), getSelectedItem() si

    select(int) sunt aceleasi ca si pentru listele de optiuni. - getSelectedIndexes() - intoarce un tablou de intregi care contine pozitiile fiecarui

    element selectat - getSelectedItems() - intoarce un tablou de siruri care contine textul fiecarui

    element selectat

    LISTE DERULANTE

  • Curs 8 - Java

    import java.awt.*; public class ListaDerulanta extends java.applet.Applet { List lista=new List(4,true); Label eticheta=new Label("Selectati ziarele pe care le cititi: "); public void init() { add(eticheta); lista.add("Evenimentul zilei"); lista.add("Adevarul"); lista.add("Libertatea"); lista.add("ProSport"); lista.add("Gazeta Sporturilor"); lista.add("Romania Libera"); add(lista); } }

    LISTE DERULANTE

  • Curs 8 - Java

    Pentru a crea o bara de scroll trebuie sa folosim unul dintre constructorii urmatori: - Scrollbar() - creaza o bara de scroll verticala cu valorile minima si maxima setate

    initial la 0 - Scrollbar(int) - creaza o bara de scroll cu valorile maxima si minima setate la 0 iar

    orientarea este data de argumentul intreg. Acest argument poate lua ca valori urmatoarele variabile de clasa: Scrollbar.HORIZONTAL, Scrollbar.VERTICAL

    - Scrollbar(int,int,int,int,int) - se creaza astfel o bara de scroll cu caracteristicile urmatoare:

    - primul argument stabileste orientarea cu ajutorul variabilelor de clasa prezentate mai sus

    - valoarea initiala a barei de scroll, care trebuie sa fie intre valorile minima si maxima ale barei

    - latimea sau inaltimea generala a casetei folosite pentru modificarea valorii barei de scroll; in cazul in care se foloseste marimea predefinita a acestei casete vom folosi valoarea 0 pentru acest al treilea argument

    - valoarea minima a barei de scroll - valoarea maxim a barei de scroll

    BARE DE SCROLL

  • Curs 8 - Java

    In exemplul de mai jos se creaza o bara de scroll orizontala. Pentru a afisa bara de scroll pe toata latimea ecranului trebuie sa folosim un administrator de dispunere - si se va folosi GridLayout pentru a imparti ecranul in 15 linii iar bara noastra de scroll va acoperi prima linie astfel creata a ecranului; caseta care gliseaza pe bara noastra de scroll va fi initial la o cincime din lungimea barei si va avea ca latime tot o cincime din lungimea barei, lucru setat din constructorul folosit pentru crearea barei noastre: import java.awt.*; public class BaraScroll extends java.applet.Applet { GridLayout admin=new GridLayout(15,1); Scrollbar bara=new Scrollbar(Scrollbar.HORIZONTAL,20,20,1,100); public void init() { setLayout(admin); add(bara); } }

    BARE DE SCROLL

  • Curs 8 - Java

    Aceste componente sunt in general folosite ca loc pentru afisarea de imagini sau animatii. Bineinteles ca putem desena si pe alte componente - ca de exemplu in fereastra Applet - insa obiectele Canvas (aceasta fiind clasa responsabila de implementarea suprafetelor de desenare) sunt cele mai simplu de folosit in acest scop. Pentru a folosi o suprafata de desenare trebuie mai intai sa cream o subclasa a clasei Canvas; aceasta subclasa se poate ocupa de toate operatiunile de desenare care trebuie sa aiba loc in metoda sa paint(). Dupa ce s-a creat o subclasa Canvas aceasta poate fi folosita in aplicatia noastra prin apelarea constructorului sau si prin adaugarea noului obiect Canvas intr-un container.

    SUPRAFETE DE DESENARE

  • Curs 8 - Java

    import java.awt.*; public class Cruce extends java.applet.Applet { GridLayout admin=new GridLayout(1,1); canvasNou suprafata=new canvasNou(); public void init() { setLayout(admin); add(suprafata); } } class canvasNou extends java.awt.Canvas { public void paint(Graphics ecran) { int x=getSize().width/2; int y=getSize().height/2; ecran.setColor(Color.blue); ecran.drawLine(x-10,y,x-2,y); ecran.drawLine(x+10,y,x+2,y); ecran.drawLine(x,y-10,x,y-2); ecran.drawLine(x,y+10,x,y+2); } }

    SUPRAFETE DE DESENARE