+ All Categories
Home > Documents > Curs13 Java

Curs13 Java

Date post: 10-Apr-2018
Category:
Upload: bogdan12345678
View: 253 times
Download: 0 times
Share this document with a friend

of 25

Transcript
  • 8/8/2019 Curs13 Java

    1/25

    15/09/2010 1

    Cuvinte importante:

    - realizarea unei interfete grafice folosind AWT: ierarhii de clase

    AWT; clasa Component, clasa Container, clasa Window, clasa Frame, clasa

    Pane;

    - notiuni de baza despre pozitionarea componentelor interfeteiutilizator: administratori de pozitionare;

    - componente AWT elementare: clasa Label, clasa Button, clasa

    TexField, clasa TextArea;

    - realizarea unei interfete grafice folosind Swing: avantaje Swing;

    proiectarea ferestrelor aplicatiei Java- clasa JFrame; folosirea componentelorelementare Swing.

  • 8/8/2019 Curs13 Java

    2/25

    15/09/2010 2

    Realizarea unei interfete grafice folosind AWT

    Pentru realizarea u nei interfete grafice utilizator pachetul java.awtdispune de

    urmatoarea ierarhie de clase:

    Dialog

    Clasa abstracta Component, aflata in radacina arborelui claselor din AWT, definesteinterfata general valabila pentru toate componentele grafice. Obiectele de tip

    Componentse numesc componente grafice.

    Un container (obiect de tip Container) este o componenta care poate contine alte

    componente AWT. Exemple de containere sunt: ferestre independente (obiecte de tip

    Frame), casete de dialog (obiecte de tipDialog), fereastraAppletetc.

    Object

    Component (clasa abstracta)

    Container

    Window

    Frame

    ScrollPane Panel

    Applet

    Button Label TextComponent

    TextArea TextField

  • 8/8/2019 Curs13 Java

    3/25

    15/09/2010 3

    Clasa Containereste superclasa tuturor suprafetelor de afisate Java (ferestre

    independente, Appleturi etc).

    O fereastra AWT (obiect de tip Window) este o suprafata de afisare dreptunghiulara

    fara margini si fara bara de meniuri.

    Un cadru (obiect de tipFrame) este o fereastra AWT cu margini, titlu si bara de

    meniuri.

    O fereastra de dialog (obiect de tipDialog) extinde o fereastra AWT prin adaugarea

    de margini si a unui titlu; ea este folosita in principal pentru a prelua informatii de la

    utilizator.

    O fereastra de defilare (obiect de tip ScrollPane) implementeaza un cadru de defilare

    pe orizontala si pe verticala pentru o componenta inclusa in container.

    Un panou (obiect de tipPanel) este folosit pentru a grupa mai multe componente

    elementare (butoane, casete de text etichete etc).

    Un applet este (obiect de tipApplet) extinde un panou AWT si este folosit ca

    suprafata de afisare a componentelor elementare ale unei aplicatii Internet de tip

    Applet, executate prin intermediul unui browser compatibil Java (ca de exemplu

    Internet Explorer sau Netscape).

  • 8/8/2019 Curs13 Java

    4/25

    15/09/2010 4

    Vom descrie succint fiecare din componentele prezentate in ierarhia de clase AWT.

    Clasa Component este o clasa abstracta care deriva din clasa Objectsi face parte din

    pachetuljava.awt.

    Dintre metodele acestei clase mentionam:

    - void setVisible(boolean ) afiseaza o componenta daca parametrul

    are valoarea true si face componenta invizibila daca parametrul este false;

    - void requestFocus() prin care componenta curenta primeste focus-ul

    (controlul asupra tastaturii) cu conditia ca ea sa fie vizibila;

    - void setBackGround(Color ) stabileste culoarea fundalului

    componentei conform cu parametrul ;

    - void setForeGround(Color ) stabileste culoarea prim planuluicomponentei;

    - void setFont(Font f) stabileste fontul pentru componenta.

  • 8/8/2019 Curs13 Java

    5/25

    15/09/2010 5

    Clasa Container face parte din pachetuljava.awt.

    Constructorul clasei este de forma:

    Container()

    Dintre metodele acestei clase mentionam:

    - Component add(Component ) introduce componenta in

    container;

    - void remove(Component ) elimina componenta dincontainer;

    - void setLayout(LayoutManager ) stabileste modul de pozitionare al

    componentelor interfetei in container, corespunzator parametrului . Vom reveni

    la modalitatile de dispunere a componentelor interfetei mai tarziu in aceasta lectie;

    - Insets getInsets() - determina distanta rezervata pentru marginilesuprafetei de afisare;

    - void validate() - forteaza containerul sa reaseze toate componentele sale;

    aceasta metoda trebuie apelata explicit atunci cand adaugam sau eliminam

    componente pe suprafata de afisare dupa ce aceasta a devenit vizibila.

  • 8/8/2019 Curs13 Java

    6/25

    15/09/2010 6

    Clasa Frame face parte din pachetul java.awt.

    Dintre constructorii clasei mentionam:

    - Frame() creaza o fereastra cu margini, titlu si bara de meniuri dar care nu

    are precizat nici un text in titlu;

    - Frame(String ) creaza o fereastra cu margini, titlu si bara de

    meniuri care are inscris in titlu textul dat de parametrul .

    Prezentam o metoda a clasei Frame des intalnita:

    - void setTitle(String ) stabileste textul care apare in titlul ferestrei.- void pack() este mostenita de la clasa Window; metoda redimensioneaza

    fereastra la cea mai mica dimensiune posibila, tinand cont de dimensiunile curente ale

    componentelor sale, de modul de asezare a componentelor sale si de insertiile de

    margini sau intre componente stabilite; trebuie apelata dupa adaugarea tuturor

    componentelor pe suprafata ferestrei.

    Clasa Panel care face parte din pachetul java.awt are doi constructori:

    - Panel()

    - Panel(LayoutManager ) stabileste modul de pozitionare al

    componentelor interfetei in panel, corespunzator parametrului .

  • 8/8/2019 Curs13 Java

    7/25

    15/09/2010 7

    Notiuni de baza despre pozitionarea componentelor interfetei utilizator

    Pentru a avea mai mult control asupra aspectului interfetei, programatorul care

    lucreaza cu AWT poate folosi administratorii de pozitionare (layout managers). Un

    administrator de dispunere determina modul cum vor fi aranjate (pozitionate)

    componentele adaugate intr-un container.

    Cativa dintre acesti administratori de pozitionare corespund claselor din urmatoarea

    ierarhie din pachetuljava.awt:

    LayoutManager (interfata)

    FlowLayout (clasa a superclasei Object)

    GridLayout (clasa a superclasei Object)

    LayoutManager2 (interfata)

    CardLayout (clasa a superclasei Object)

    BorderLayout (clasa a superclasei Object)

    GridBagLayout (clasa a superclasei Object)

  • 8/8/2019 Curs13 Java

    8/25

    15/09/2010 8

    Pentru a crea un administrator de pozitionare pentru un container, se creaza o instanta

    a clasei administratorului folosind o instructiune de genul:

    GridLayout glo = new GridLayout();

    Dupa crearea administratorului de pozitionare, acesta va fi declarat drept

    administrator de pozitionare pentru container folosind metoda setLayout() a acestuia:

    setLayout(glo);

    Nota: Administratorul de pozitionare trebuie stabilit inainte de a adauga, folosindmetoda add(), componentele in container.

    Vom descrie succint cativa dintre administratorii de pozitionare mai des folositi.

    Pozitionarea secventiala a componentelor

    FlowLayouteste cea mai simpla clasa de administrare a pozitionarii componentelor.

    Ea aranjeaza componentele intr-o maniera asemanatoare dispunerii cuvintelor intr-o

    pagina de la stanga la dreapta pana la capatul randului, apoi in continuare pe randul

    urmator.

  • 8/8/2019 Curs13 Java

    9/25

    15/09/2010 9

    Pozitionarea tabelara a componentelor

    Administratorul de pozitionare tabelara (GridLayout) aranjeaza componentele intr-un

    tabel format din randuri si coloane. Componentele sunt asezate incepand cu celula

    aflata cel mai in stanga pe primul rand al tabelului si continuand spre dreapta. Dupacompletarea tuturor celulelor de pe primul rand se continua cu cel de-al doilea rand,

    de la stanga la dreapta, si asa mai departe.

    Pozitionare marginala

    Pozitionarea marginala (BorderLayout) imparte un container in cinci sectiuni: nord,

    sud, est, vest si centru. Acest aranjament are ca rezultat o componenta centrala dedimensiuni mari, inconjurata de patru componente de dimensiuni mai mici.

    Pozitionare tabelara neproportionata

    Pozitionarea tabelara neproportionata (GridBagLayout) reprezinta o extensie a

    dispunerii tabelare. O pozitionare tabelara neproportionata difera de o dispunere

    tabelara simpla prin urmatoarele:- o componenta poate ocupa mai multe celule ale tabelului;

    - proportiile intre diferitele randuri sau coloane nu trebuie sa fie aceleasi;

    - componentele dispuse in cadrul celulelor pot fi aranjate in diferite moduri.

  • 8/8/2019 Curs13 Java

    10/25

    15/09/2010 10

    Componente AWT elementare

    Componentele elementare (numite si controale grafice) permit interactiunea cu

    utilizatorul si realizarea (prin modul lor de asezare si aspectul lor) unei interfeteprietenoase in dialogul cu acesta.

    Componentele elementare pot fi adaugate containerelor. Fie Cun container si comp

    o componenta elementara. Adaugarea lui comp in Cse realizeaza astfel:

    - se creaza componenta comp;

    - se apeleaza metoda add(), declarata in clasa Container, pentru

    componenta comp:

    C.add(comp);

    Atunci cand se adauga o componenta intr-un container, nu se specifica

    coordonatele x, y ale locului unde va fi plasata aceasta. De aranjamentul

    componentelor se ocupa administratorul de dispunere (layout manager) care

    apartine containerului respectiv.

    Vom descrie cateva componente elementare mai des folosite: etichete (Label),

    butoane (Button), campuri de text (TextField) si zone de text (TextArea).

  • 8/8/2019 Curs13 Java

    11/25

    15/09/201011

    Etichete

    Etichetele sunt create folosind clasaLabel. E.tichetele sunt texte care pot fi afisate pe

    suprafata de afisare dar nu pot fi modificate de utilizator

    ClasaLabelare urmatorii constructori:

    - Label() creaza o eticheta cu text vid;

    - Label(String ) creaza o eticheta cu textul, specificat in parametrul

    , aliniat la stanga.

    Dintre metodele claseiLabel, mai des folosite sunt:

    - void setText(String ) scrie un text, specificat in parametrul ,

    pe eticheta;

    - String getText() returneaza textul asociat etichetei;

    - void setAlignment(int i) seteaza aliniere textului in eticheta (precizand

    pentru argument una din constantele clasei). Alinierea implicita este la stanga.

  • 8/8/2019 Curs13 Java

    12/25

    15/09/201012

    Butoane

    Butoanele sunt create folosind clasaButton. Butoanele sunt folosite intr-o interfata

    pentru a declansa o anumita actiune.

    ClasaButton are urmatorii constructori:

    - Button() creaza un buton care nu contine nici un text pentru explicarea

    functiei sale;

    - Button(String ) creaza un buton pe care este afisat sirul de text,specificat in parametrul .

    Dintre metodele claseiButton, mai des folosite sunt:

    - void setLabel(String ) scrie sirul de text, specificat in

    parametrul , pe buton;

    - String getLabel() returneaza eticheta inscrisa pe buton;

  • 8/8/2019 Curs13 Java

    13/25

    15/09/201013

    Campuri si arii de text

    Campurile si ariile de text sunt create folosind clasele TextFieldsi TextArea. Textele

    sunt folosite intr-o interfata pentru a crea zone in care textul poate fi modificat de

    utilizator. Aceste doua clase au ca superclasa TextComponent.

    Clasa TextFieldare mai multi constructori dintre care mentionam:

    - TextField() creaza un camp de text care nu contine nici un text;

    - TextField(String ) creaza un camp de text completat cu sirul de

    text, specificat in parametrul .

    Dintre metodele clasei TextField, mai des folosite sunt:

    - void setText(String ) scrie sirul de text, specificat in parametrul

    , in camp;

    - String getText() returneaza textul continut de camp;

    - void setEditable(boolean ) determina daca acel camp de text poate fimodificat. Un parametru cu valoarea false impiedica editarea campului, iar valoarea

    true o permite (aceasta este prestabilita).

    - boolean isEditable() returneaza o valoare de tip booleanprin care se

    indica daca acel camp poate fi editat (true) sau nu (false).

  • 8/8/2019 Curs13 Java

    14/25

    15/09/201014

    Obiectele de tip TextArea se deosebesc de obiectele TextField prin aceea ca ele contin

    mai multe linii de text. Zonele de text poseda bare de defilare orizontale si verticale,

    care permit utilizatorului sa parcurga intregul text continut in componenta.

    Clasa TextArea are mai multi constructori dintre care mentionam:

    - TextArea() creaza o arie de text care nu contine nici un text, cu inaltimea

    si latimea nespecificate;

    - TextArea(String ) creaza o arie de text completata cu sirul de text,

    specificat in parametrul , cu inaltimea si latimea nespecificate.

    Dintre metodele clasei TextArea, mai des folosite sunt:

    - void setText(String ), String getText(), void setEditable(boolean

    ), boolean isEditable() prezentate la clasa TextField;

    - void setRows (int ) stabileste numarul de linii ale ariei de text

    conform cu parametrul ;

    - void setColumns (int ) stabileste numarul de coloane ale ariei de text

    conform cu parametrul ;

  • 8/8/2019 Curs13 Java

    15/25

    15/09/201015

    - void insert(String , int ) insereaza textul la pozitia

    din aria de text;

    - void replaceRange(String , int

    , int ) inlocuieste textul dintre

    pozitiile

    si cu testul .

    Realizarea unei interfete grafice folosind Swing

    Tehnologia Swing face parte din proiect numit JFC (Java Foundation Classes) care

    pune la dispozitie, dezvoltatorilor de aplicatii Java o serie intreaga de facilitati pentru

    scrierea de aplicatii cu o interfata grafica mult imbunatatita functional si estetic fata

    de vechiul model AWT.Avantaje Swing

    Swing permite unui program Java sa-si modifice aspectul si comportarea (look and

    feel) sub actiunea unui program sau chiar a utilizatorului. Astfel, Swing permite

    crearea unui program Java cu o interfata utilizator care foloseste stilul sistemului de

    operare nativ cum ar fi Windows sau Solaris sau un stil propriu Java, care a fost

    denumit Metal.

    Componentele Swing sunt implementate in intregime in Java. Aceasta are ca rezultat

    o mai buna compatibilitate cu platforme diferite decat in cazul folosirii

    componentelor AWT. Toate componentele Swing fac parte din pachetul javax.swing.

  • 8/8/2019 Curs13 Java

    16/25

    15/09/201016

    Proiectarea ferestrelor aplicatiei cu Swing

    Modul de folosire a unei componente Swing nu este diferit de cel al folosirii

    componentelor AWT. Toate componentele Swing sunt subclase ale claseiJComponent.

    Object (din pachetuljava.lang)

    Component (clasa abstracta, din pachetuljava.awt)

    Container (din pachetuljava.awt)

    Jcomponent (clasa abstracta, din pachetul javax.swing)

    Pentru a fi afisate pe ecran, componentele grafice, ale unei aplicatii care foloseste o

    interfata Swing, trebuie plasate pe o suprafata de afisare, numit container radacina.

    Containerul radacina este reprezentat de una din claseleJFrame,JDialogsau

    JApplet.

  • 8/8/2019 Curs13 Java

    17/25

    15/09/201017

    Vom face cateva consideratii asupra modului de folosire a clasei JFrame. Clasa

    JFrame este o extensie a claseiFrame si poate fi folosita intr-un mod asemanator,

    totusi, cu cateva deosebiri.

    Orice aplicatie Java cu interfata Swing contine cel putin un container radacina

    reprezentat de fereastra principala a programului, instanta a claseiJFrame. Un obiect

    care reprezinta o fereastra Swing contine o zona care este rezervata barei de meniuri

    si care este situata in partea sa superioara si corpul ferestrei pe care vor fi plasate

    componentele sale. Corpul ferestrei este o instanta a clasei Containerce poate fiobtinuta cu metoda getContentPane() (metoda a clasei JFrame). Plasarea si aranjarea

    componentelor pe suprafata ferestrei se va face folosind obiectul de tip Containersi

    nu direct fereastra de tipJFrame.

    Spre deosebire deFrame, un obiectJFrame are un comportament implicit la

    inchiderea ferestrei, care consta in ascunderea ferestrei atunci cand utilizatorul apasa

    butonul de inchidere (din coltul dreapta sus). Acest comportament poate fi modificatprin apelarea metodei setDefaultCloseOperation() (metoda a claseiJFrame) care

    primeste ca parametru diverse constante ce se gasesc in clasa WindowConstants.

  • 8/8/2019 Curs13 Java

    18/25

    15/09/201018

    Constantele folosite ca parametru pentru metoda setDefaultCloseOperation() sunt:

    -DO_NOTHING_ON_CLOSE (definita in WindowConstants) nu se intampla

    nimic, ci numai solicita programului sa trateze, in metoda windowClosing(),

    evenimentele interceptate cu un interceptor de tip WindowListener;

    -HIDE_ON_CLOSE (definita in WindowConstants) inchide automat fereastra dupa

    invocarea si interceptarea unui obiect de tip WindowListener;

    -EXIT_ON_CLOSE (definita in WindowConstants) termina aplicatia folosindmetoda System.exit().

    Valoarea implicita este: HIDE_ON_CLOSE.

    Daca se foloseste mediul de programare NetBeans, codul pentru apelul

    metodelorgetContentPane si setDefaultCloseOperation se genereaza automat

    in metoda initComponents() a constructorului ferestrei de tip JFrame, ca insecventa de mai jos:

  • 8/8/2019 Curs13 Java

    19/25

    15/09/2010 19

    public class TestInterfataSwing extends javax.swing.JFrame {

    /** Creates new form TestInterfataSwing */

    public TestInterfataSwing() {

    initComponents();

    }

    private void initComponents() {

    jButton1 = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    jButton1.setText("Calcul Medie");

    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(161, 161, 161)

    .add(jButton1)

  • 8/8/2019 Curs13 Java

    20/25

    15/09/2010 20

    .addContainerGap(148, Short.MAX_VALUE))

    );

    layout.setVerticalGroup(

    layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)

    .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()

    .addContainerGap(249, Short.MAX_VALUE)

    .add(jButton1)

    .add(28, 28, 28))

    );

    pack();

    }

    // Variables declaration - do not modifyprivate javax.swing.JButton jButton1;

    // End of variables declaration

    }

  • 8/8/2019 Curs13 Java

    21/25

    15/09/2010 21

    Folosirea componentelor elementare Swing

    Deoarece clasaJComponentextinde clasa Container, ea mosteneste functionalitatea

    generala a containerelor si componentelor AWT, furnizand binenteles si o serie

    intreaga de noi facilitati.

    Dintre facilitatile oferite de clasa Jcomponent mentionam:

    -Asocierea de ToolTips (informatii ajutatoare dependente de context). Folosind

    metoda setToolTip() poate fi atasat unei componente un text cu explicatii legate de

    componenta respectiva. Cand utilizatorul trece cu mouse-ul deasupra componentei

    va fi afisat, pentru o perioada de timp, textul ajutator specificat.

    - Stabilirea de chenare. Orice componenta Swing poate avea unul sau mai multe

    chenare. Specificarea unui chenar se realizeaza cu metoda setBorder().

    - Extinderea suportului pentru pozitionarea si dimensionarea componentelor.

    Folosind metodele setPreferredSize(), setMinimumSize(), setMaximumSize(),setAlignmentX(), setAlignmentY() pot fi controlati parametrii folositi de gestionarii

    de pozitionare pentru plasarea si dimensionarea automata a componentelor in cadrul

    unui container.

  • 8/8/2019 Curs13 Java

    22/25

    15/09/2010 22

    - Stabilirea de secvente de taste de accelerare. O secventa de taste de accelerare (key

    accelerator), denumita si secventa de prescurtare (keyboard mnemonic), reprezinta o

    grupare de taste care poate fi folosita pentru a controla comportamentul unei

    componente a interfetei utilizator. Aceste taste permit folosirea unei aplicatii fara

    ajutorul mouse-ului.

    Toate componentele elementare AWT se regasesc si in Swing. In majoritatea

    cazurilor, constructorii componentelor Swing sunt similari constructorilor AWT.

    Toate clasele corespunzatoare componentelor elementare din AWT au acelasi nume in

    Swing dar precedat de litera J, cum ar fi: JButton, JTextField, JLabel, JTextArea

    etc.

    Casete de dialog standard pentru afisare de mesaje si introducere de date de la

    tastatura

    ClasaJOptionPane ofera mai multe metode care pot fi folosite pentru a crea casete de

    dialog standard: mici ferestre in care se afiseaza un scurt mesaj sau se introduc date

    de la tastatura.

    Casetele de dialog standard sunt de patru tipuri:

    - ConfirmDialog o caseta de dialog care pune o intrebare si contine trei butoane:

    Yes, No, Cancel;

    - InputDialog- o caseta de dialog care asteapta introducerea unui text;

  • 8/8/2019 Curs13 Java

    23/25

    15/09/2010 23

    - MessageDialog- o caseta de dialog care afiseaza un mesaj;

    - OptionDialog- o caseta de dialog care cuprinde toate celelalte trei tipuri.

    Pentru crearea uneia din cele patru tipuri de casete de dialog se foloseste metoda

    show() in care specifica unul din tipurile de caseteprezentate mai sus.

    Crearea casetelor de dialog de confirmare

    Crearea casetelor de dialog de confirmare se realizeaza cu metoda:

    showConfirmDialog(, , ,, )

    unde:

    - - specifica containerul care va fi considerat parintele casetei

    de dialog; aceasta informatie este folosita pentru a determina unde se va afisa pe

    ecran fereastra de dialog; daca se foloseste valoarea nullpentru acest argument sau

    containerul nu este un obiectFrame, caseta de dialog va fi afisata in centrul

    ecranului.

    - - specifica sirul de text care va fi afisat in caseta;

    - - specifica un sir de text care va fi afisat pe bara de titlu;

  • 8/8/2019 Curs13 Java

    24/25

    15/09/2010 24

    - - specifica ce butoane vor fi afisate in caseta, pe baza constantelor:

    YES_NO_CANCEL_OPTION sau YES_NO_OPTION;

    - - specifica tipul pictogramei afisata in caseta care determinatipul casetei de dialog, pe baza constantelor: ERROR_MESSAGE,

    INFORMATION_MESSAGE, PLAIN_MESSAGE, QUESTION_MESSAGE.

    Metoda returneaza un intreg care reprezinta una din cele trei valori posibile:

    YES_OPTION, NO_OPTION, CANCEL_OPTION.

    De exemplu:

    int raspuns = JOptionPane.showConfirmDialog(null, Pot sa adaug o inregistrare in

    fisierul dvs.);

    Crearea casetelor de dialog de intrare

    Crearea casetelor de dialog de intrare se realizeaza cu metoda:

    showInputDialog(, , ,

    )

    Metoda returneaza un sir care reprezinta raspunsul utilizatorului.

  • 8/8/2019 Curs13 Java

    25/25

    15/09/2010 25

    De exemplu:

    String raspuns = JOptionPane.showInputDialog(this, "Introduceti un numar",

    "Introducere de date", JOptionPane.INFORMATION_MESSAGE);


Recommended