proiectare interfete java

41
Proiectare interfeţe utilizator User-Interface Programming User Interface Design Curs – Calculatoare. CALC026 2011-2012 Facultatea de Inginerie Catedra de Inginerie Electrică

Upload: robertcozianu

Post on 17-Nov-2015

43 views

Category:

Documents


3 download

DESCRIPTION

Proiectare interfete JAVA

TRANSCRIPT

  • Proiectare interfee utilizatorUser-Interface Programming

    User Interface Design

    Curs Calculatoare.CALC026

    2011-2012

    Facultatea de InginerieCatedra de Inginerie Electric

  • Proiectarea i implementarea interfeelor utilizator in Java

  • Cuprins

    Prezentarea suportului oferit de Java Pachete i Clase

  • Introducere

    Tipuri de aplicaii java cu interfa grafic: Aplicaii stand-alone Applet-uri Servlets

    Modaliti de a crea aplicaii cu interfagrafic: AWT (Abstract Windowing Toolkit) Swing

  • AWT API-ul pus la dispoziie ncepnd cu primele

    versiuni de Java SWING

    parte proiectul JFC (Java FoundationClasses) iniiat de Sun, Netscape si IBM

    Are la baz AWT extinde funcionalitatea AWT adaugnd sau

    nlocuind componente pentru dezvoltarea aplicaiilor GUI

  • De ce Swing dar si AWT Swing pune la dispoziie o palet larg de

    faciliti AWT ofer clase eseniale reutilizate n Swing

  • Etapele dezvoltrii GUI in Java

    Design Crearea unei suprafee de afiare (ex. o

    fereastr) pe care vor fi aezate obiectele grafice (componente) care servesc la comunicarea cu utilizatorul (butoane, controale pentru editarea textelor, liste, etc);

    Crearea i aezarea componentelor pesuprafaa de afiare la poziiilecorespunztoare;

  • Definirea i implementarea funcionalitii Definirea unor aciuni care trebuie s se

    execute n momentul cnd utilizatorulinteracioneaz cu obiectele grafice ale aplicaiei;

    Ascultarea evenimentelor generate de obiecte n momentul interaciunii cu utilizatorul i executarea aciunilor corespunztoare, aa cum au fost ele definite.

  • Realizarea GUI cu AWT

    Component (grafic) orice obiect care poate avea o reprezentare

    grafic i care poate interactiona cu utilizatorul

    Ex.: ferestrele, butoanele, listele, bare de defilare, etc.

    componentele AWT sunt definte de clase proprii din pachetul java.awt

    clasa Component - superclasa abstract a tuturor acestor clase

  • ... De reinut Clasa Container

    este o subclas aparte a lui Component superclasa tuturor suprafetelor de afiare Java

    container (ca suprafa de afiare) o instan a unei clase derivate din Container suprafa pe care sunt plasate componente Componetele devin vizibile cnd suprafaa devine

    vizibil are asociat un obiect care se ocup cu

    dimensionarea i dispunerea componentelor pe suprafaa de afiare i care se numeste gestionar de poziionare (layout manager)

    Clas listener tratarea evenimentelor - clase de tip (asculttor,

    consumator de evenimente) definite n pachetul java.awt.event

  • Componentele AWT

    Button - butoane cu eticheta format dintr-un text pe o singur linie;

    Canvas - suprafa pentru desenare; Checkbox - component ce poate avea dou

    stri; mai multe obiecte de acest tip pot fi grupate folosind

    clasa CheckBoxGroup; Choice - liste n care doar elementul selectat

    este vizibil i care se deschid la apsarea lor;

  • ... Componentele AWT Container - superclasa tuturor suprafeelor de

    afiare Label - etichete simple ce pot conine o singur

    linie de text needitabil; List - liste cu selecie simpl sau multipl; Scrollbar - bare de defilare orizontale sau

    verticale; TextComponent - superclasa componentelor

    pentru editarea textului: TextField - editare text pe o singur linie TextArea - editare text pe pe mai multe linii MenuComponent - superclasa care descrie

    meniuri

  • .... Componentele AWT metode comune, motenite din clasa

    Component Poziie

    getLocation, getX, getY, getLocationOnScreen setLocation, setX, setY

    Dimensiuni getSize, getHeight, getWidth setSize, setHeight, setWidth

    Dimensiuni i poziie getBounds setBounds

    Culoare (text i fundal) getForeground, getBackground setForeground, setBackground

  • .... Componentele AWT

    Font getFont setFont

    Vizibilitate setVisible isVisible

    Interactivitate setEnabled isEnabled

  • Suprafee de afiare(Clasa Container)

    Crearea obiectelor grafice nu realizeazautomat i afiarea lor pe ecran

    suprafaa de afiare sau container reprezinto instana a unei clase derivat din Container

    un container este folosit pentru a aduga componente pe suprafaa lui

  • Clase derivate din clasa Container Window - este superclasa tututor ferestrelor.

    Clase derivate: Frame - ferestre standard; Dialog - ferestre de dialog modale sau nemodale

    Panel - o suprafa fr reprezentare graficfolosit pentru gruparea altor componente. Clase derivate - clasa Applet

    ScrollPane - container folosit pentru implementarea automat a derulrii pe orizontal sau vertical a unei componente.

  • Componentele adugate sunt memorate ntr-o list

    Poziiile lor din aceast list vor defini ordinea de traversare front-to-back a acestora n cadrul containerului.

    Dac nu este specificat nici un index la adugarea unei componente, atunci ea va fi adaugat pe ultima poziie a listei.

  • Metodele comune tututor suprafeelor de afiare

    add - adugarea unei componente pe suprafaa de afiare. OBS:

    O component nu poate aparine dect unui singur container, ceea censeamn c pentru a muta un obiect dintr-un container n altul trebuiesa-l eliminam mai nti de pe containerul initial.

    remove - elimin o componenta de pe container; setLayout - stabilete gestionarul de poziionare al containerului getInsets - determin distana rezervat pentru marginile suprafeei

    de afiare; validate

    foreaz containerul s reaeze toate componentele sale. trebuie apelat explicit atunci cnd adugm sau eliminm componente

    pe suprafaa de afiare dup ce aceasta a devenit vizibil.

  • Tratarea evenimentelor Eveniment

    aciunea utilizatorului asupra unei componente grafice

    mecanismul prin care utilizatorul comunic cu programul

    Obiect Java Surse de evenimente componente care

    genereaz evenimente Interceptarea evenimentelor clase tip

    listener (asculttor, consumator de evenimente)

  • Implementare clas de tip listener care s asculte

    evenimentele produse de acea component i care implementeaz metode specifice pentru tratarea lor;

    nregistrarea respectivei clase drept consumator al evenimentelor produse de componnet

  • Tratarea evenimentelor n Java : Componentele genereaz evenimente cnd

    ceva interesant se ntmpl; Sursele evenimentelor permit oricrei clase

    s asculte evenimentele sale prin metode de tip addXXXListener, unde XXX este un tip deeveniment;

    O clas care ascult evenimente trebuie simplementeze interfee specifice fiecrui tip de eveniment - acestea descriu metode ce vor fi apelate automat la apariia evenimentelor.

  • import java . awt .*;import java . awt. event .*;class Fereastra extends Frame {public Fereastra ( String titlu ) {

    super ( titlu );setLayout (new FlowLayout ());setSize (200 , 100) ;Button b = new Button ("OK");add (b);Ascultator listener = new Ascultator ( this );b. addActionListener ( listener );// butonul este ascultat de obiectul listener ,// instanta a unei clasei Ascultator}

    }

  • class Ascultator implements ActionListener {private Fereastra f;public Ascultator ( Fereastra f) {

    this .f = f;}// Metoda interfetei ActionListenerpublic void actionPerformed ( ActionEvent e) {

    f. setTitle ("Ati apasat " + e. getActionCommand ());}

    }public class TestEvent1 {

    public static void main ( String args []) {Fereastra f = new Fereastra (" Test Event ");f. setVisible (true);

    }}

  • Tipuri de evenimente

    Evenimente de nivel sczut

    Apsare tast Micarea mouse-ului Etc.

    Semnatice - interaciunea cu o component GUI

    Apsare buton Selectare articol din list Etc.

  • Evenimente de nivel sczut

    Clasele care descriu evenimente de nivel sczut i operaiunile care le genereaz

  • Obs: O aciune a utilizatorului poate genera mai

    multe evenimente Se pot trata oricare dintre evenimentele

    generate Ex.: evenimente apsare tast:

    Apsare Eliberare Tastare

  • Evenimente semantice

    Clase pentru descrierea evenimentelor semantice

  • Componente AWT i tipurile de evenimente generate

    componente

    interfee

  • Metode implementate de clasa asculttor

  • OBS: Obiectul responsabil cu generarea

    evenimentului getSource()

    Diferenierea componenetei surs Opetatorul instanceof

    if (sursa instanceof Button) {// A fost apasat un buton...

    }

    if (sursa instanceof TextField) {// S-a apasat Enter dupa editarea textului

    ...}

  • Adaptori i clase anonime O clas care trateaz evenimente de un

    anumit tip trebuie s implementeze interfaa corespunztoare acelui tip

    Implementare obligatorie a tuturor metodelor definite de interfa (WindowListener: windowClosed, windowIconified, windowDeiconified, windowActivated, windowDeactivated)

    Adaptori - Clase care implementeaz interfee listener fr a specifica cod pt. Metodele lor

  • Adaptor - clas abstract care implementeaz o anumit interfa fr a specifica codul metodelor a interfeei

    Utilizare: Extindere adaptor corespunztor interfeei

    respetive (dac exist) Supradefinirea doar a metodelor care ne

    intereseaz

  • import java . awt .*;import java . awt. event .*;class Fereastra extends Frame {

    public Fereastra ( String titlu ) {super ( titlu );this . addWindowListener (new Ascultator ());

    }}class Ascultator extends WindowAdapter {// Supradefinire metoda care ne intereseaza

    public void windowClosing ( WindowEvent e) {System . exit (0);

    }}public class TestWindowAdapter {

    public static void main ( String args []) {Fereastra f = new Fereastra (" Test WindowAdapter ");f. setVisible ();

    }}

  • Adaptorii interfeelor de tip listener

  • Clas intern clas declarat n cadrul altei clase

    Clas anonim clas intern folosit pentru instanierea unui singur obiect de un

    anumit tip Ex. Utilizare

    Instanierea adaptorilor direct n corpul unei clase care conine componente ale cror eveniemente trebuie tratate

    class Fereastra extends Frame {public Fereastra ( String titlu ) {

    super ( titlu );setSize (400 , 400) ;this . addWindowListener (new WindowAdapter () {

    public void windowClosing ( WindowEvent e) {// Terminam aplicatiaSystem . exit (0);

    }});

    }

  • ntrebri?

  • Lets get to the next section!