c11 – lpo: componente swing si evenimente

19
C11 – LPO: Componente Swing si evenimente CUPRINS Swing: JLabel JTextField JTextArea JCheckBox JRadioButton Evenimente

Upload: kimberly

Post on 27-Jan-2016

72 views

Category:

Documents


0 download

DESCRIPTION

C11 – LPO: Componente Swing si evenimente. CUPRINS Swing: JLabel JTextField JTextArea JCheckBox JRadioButton Evenimente. Obiective. După parcurgerea acestui curs ar trebuie sa puteţi: înţelege principiile de lucru cu elementele de interfata Swing; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: C11 – LPO: Componente Swing si evenimente

C11 – LPO: Componente Swing si evenimente

CUPRINS

Swing: JLabel JTextField JTextArea JCheckBox JRadioButton

Evenimente

Page 2: C11 – LPO: Componente Swing si evenimente

Obiective

După parcurgerea acestui curs ar trebuie sa puteţi: înţelege principiile de lucru cu elementele de

interfata Swing; înţelege posibilitatile de pozitionare a

componentelor in contianere; modalitatea de crea o interfata grafica sigura

utilizand elementele Swing: JLabel , JTextField, JTextArea, JCheckBox, JRadioButton ;

înţelege conceptul de eveniment şi crea sau modifica rutine de tratare a evenimentelor generate din JDeveopler;

Page 3: C11 – LPO: Componente Swing si evenimente

Pozitionarea componentelor din

interfata 1

interfetele grafice se creeaza prin adaugarea lor in containere, cel mai folosit este JPanel-ul;

fiecare container are propriul lui manager de aranjare (layout manager) ce determina modul de pozitionare al componentelor in container;

implicit JPanel foloseste managerul numit “flow layout” (FlowLayout) ce pozitioneaza componentele de la stanga la dreapta si trece la un rand nou cand nu mai este spatiu pe randul curent;

implicit JFrame foloseste managerul “default” acesta indica doar faptul ca in locul lui se poate selecta un obiect manager de aranjare ce are anumite proprietati prin care se poate configura;

un manager utilizat des este BorderLayout, el imparte ecranul in 5 regiuni numite geografic: Nord, Sud, Est, Vest si Centru; fiecare regiune poate contine mai multe obiecte insa numai unul este afisat; daca dorim sa plasam mai multe componente intr-o regiune se pun intr-un JPanel.

Page 4: C11 – LPO: Componente Swing si evenimente

Pozitionarea componentelor din

interfata 2

daca utilizatorul redimensioneaza fereastra, dimensiunile componentelor se modifica corespunzator si ele;

proprietatea constraints a componentei defineste in care dintre cele 5 regiuni se pone componenta.

Page 5: C11 – LPO: Componente Swing si evenimente

Pozitionarea componentelor din

interfata 3

un alt manager utilizat des este GridLayout ce organizeaza obiectele plasate in container pe celule de linii si coloane de aceeasi marime;

redimensionarea ferestrei face ca obiecte sa-si modifice si ele marimile astfel incat sa pastreze marimea celulelor identica;

proprietati care definesc comportamentul acestui manager sunt: columns: numarul maxim de coloane; hgap: numarul de pixeli intre coloane; rows: numarul maxim de randuri; vgap: numarul maxim de pixeli intre fiecare rand.

adaugare unui manager la fereastra principala (JFrame) se face cu:this.getContentPane().setLayout(borderLayout1);

adaugarea unei container JPanel la regiunea Centru se face cu: this.getContentPane().add(jPanel1, BorderLayout.CENTER);

Page 6: C11 – LPO: Componente Swing si evenimente

JLabel o componenta ce stocheaza si afiseaza un text (nu are

decoratiuni, de exemplu margine); nu interactioneaza cu utilizatorul, se foloseste pentru identificare; se pot pozitiona in interiorul containerelor; constructori:

JLabel(String text, int aliniere) > JLabel(“Text”, JLabel.Right)

JLabel(Icon simbol) JLabel(String text)

metode: void setText(String text): modifica textul afisat in Label;

void setIcon(Icon simbol): modifica simbolul grafic din Label (eticheta).

Page 7: C11 – LPO: Componente Swing si evenimente

JTextField citirea de text de la tastatura se poate face prin 2

componente JTextField si JTextArea; ambele componente mostenesc de la clasa abstracta

JTextComponent metodele: void setText(String): modifica textul din

compoenta la textul t; String getText(): intoarce textul introdus in

componenta; void setEditable(boolean b): asigura activarea

sau inhibarea editarii textului din componenta. creare:

JTextField N = new JTextField();

Page 8: C11 – LPO: Componente Swing si evenimente

JTextArea asigura citirea de text mai lung de o linie; utilizatorul poate introduce orice

numar de linii prin apasarea de <Enter>, fiecare linie se termina cu ‘\n’; constructori:

JTextArea(int rows, int columns): creeaza o regiune de text de rows randuri si columns coloane;

JTextArea(String s, int rows, int columns): creeaza o regiune text cu textul initial text si rows randuri si columns coloane.

proprietati: text, editable, columns, rows lineWrap: true sau false dupa cum e wrappingul wrapStyleWord: pentru true wrappingul se face la nivel de cuvinte (altfel

carater) lineCount: numarul de linii din regiune; tabSize: numarul de caractere la care se opreste tabulatorul.

metode: void append(String textNou): adauga textNou la textul deja existent in regiune.

String text = “… Un text …/n” + “… textul continua …”;JTextArea ta = new JTextArea(); ta.setText(text);

Page 9: C11 – LPO: Componente Swing si evenimente

JCheckBox

componenta asigura selectia starii de activ (da, true) sau inactiv (nu, flase);

constructori: JCheckBox() JCheckBox(String text) JCheckBox(String text, boolean selected) JCheckBox(Icon icon) JCheckBox(String text, Icon icon) JCheckBox(String text, Icon icon, boolean selected)

metode: setSelected(boolean stare): seteaza starea checkbox-ului; boolean isSelected(): intoarce starea checkbox-ului.

chk1 = new JCheckBox(“Check 1”, FALSE);chk2 = new JCheckBox(“Check 2”, TRUE);

Page 10: C11 – LPO: Componente Swing si evenimente

JRadioButton sunt o varietate de checkbox. se utilizeaza grupate, caz in care numai un buton al grupului

poate fi selectat; constructori:

JRadioButton() JRadioButton(String text) JRadioButton(String text, boolean selected) JRadioButton(Icon icon) JRadioButton(String text, Icon icon) JRadioButton(String text, Icon icon, boolean selected)

metode: boolean isSelected()

grupare:

// Creare JRadioButtonJRadioButton rb1 = JRadioButton(“Radio 1”);JRadioButton rb2 = JRadioButton(“Radio 2”, selected);// Creare grup de JRadioButtonsButtonGroup rbg = new ButtonGroup();rbg.add(rb1);rbg.add(rb2);

Page 11: C11 – LPO: Componente Swing si evenimente

Programarea orintata pe Evenimente

in programarea procedurala (clasica) instructiunile se executa secvential, la fel si procedurile ce grupreaza anumite secvente de cod;

in programarea orientata pe evenimente secventele de cod ce se executa sunt activate de evenimente;

tratarea evenimentelor se bazeaza pe modelul delegarii procesarii evenimentelor deoarece asigura un mecanism standard si consistent de generare si prelucrare a evenimentelor;

in acest model o sursa genereaza un eveniment si il trimite la mai multi listeneri (ascultatori); listenerul asteapta pina primeste un eveniment, il prelucreaza, apoi se termina; un listener trebuie sa se inregistreze cu o sursa pentru a primi o notificare de eveniment; din acest motiv notificarile se trimit numai listener-uruilor ce doresc sa le primeasca;

avantajele acestui model constau in separarea portiunii de cod ce implementeaza logica aplicatiei ce prelucreaza evenimentul de logica interfetei care a generat evenimentul;

un element de interfata poate “delega” prelucrarea unui eveniment unei portiuni de cod independente numite rutina de tratare a evenimentului.

Page 12: C11 – LPO: Componente Swing si evenimente

Evenimente

in model un eveniment este un obiect ce descrie o schimbare de stare intr-o sursa; evenimentul este un semnal trimis programului ca ceva s-a modificat;

evenimentul este generat de actiuni externe ale utilizatorului cu ar fi miscarea de mouse, apasari de butoane sau de sistemul de operare prin timer-e ;

obiectul de interfata prin care s-a generat un eveniment se numseste sursa;

clasa de baza a tuturor evenimentelor este java.util.EventObj.

subclasele lui EventObj tratreaza cazuri speciale de evenimente cum ar fi: actiuni cu butoane, evenimente de fereastra, evenimente de componente, mouse sau tasatura.

Page 13: C11 – LPO: Componente Swing si evenimente

Surse de evenimente, Obiecte sursa si Tipuri de evenimente

Obiect TipSursa evenimentSursa Eveniment

Clic pe un buton JButton ActionEvent

Modificare text JTextComponent TextEvent

Clic pe un check boxJCheckBox ItemEvent, ActionEvent

Clic pe un eadio button JRadioButton ItemEvent,

ActionEvent

Page 14: C11 – LPO: Componente Swing si evenimente

Inregistrare eveniment, Ascultare si Tratare

Page 15: C11 – LPO: Componente Swing si evenimente

Tratarea evenimentelor

un listener trebuie sa: se inregistreze cu una sau mai multe surse pentru a

primi notificari despre un tip specific de eveniment; implementeze metode pentru a primi si prelucra

notificarrile. obiectul listener trebuie sa implementeze interfata

corespunzatoare lui; de exemplu un listerent de JButton trebuie sa implementeze interfata ActionListener. Interfata ActionListener contine metoda actionPerformed(ActionEvent e) pentru tratarea evenimetului;

un obiect eveniment este transferat rutinei de tratare ce contine date referitoare la evenimet.

Page 16: C11 – LPO: Componente Swing si evenimente

JDeveloper si evenimetele Swing

mediul JDeveloper simplifica mult procedura de scriere a codului pentru tratarea de evenimente

la nivelul mediului evenimentele necesita doua categorii de cod: un listener de eveniment pentru a detecta evenimente si pentru

apelarea rutinei de tratare a evenimentului si o metoda (rutina de tratare a evenimentului) al carei cod se

ruleaza atunci cand listener-ul dterenima ca acel evenimet a aparut.

rutina de tratare e evenimentului se creaza din Java Visual Editor prin clic dublu pe componenta in editorul vizual; in acest fel se creeaza automat listener-ul actionPerformed ce corespunde evenimentului implicit specific componentei; apoi din Property Inspector se creaza rutina de tratare a evenimentului;

dupa selectarea unei componente Property Ispector afiseaza toata lista de evenimente la care poate reactiona componenta;

Page 17: C11 – LPO: Componente Swing si evenimente

Etapele tratarii evenimentului clic pe

JButton

1

2

34

Clic dublu5

ListenerRutina de tratare a

evenimentului

Page 18: C11 – LPO: Componente Swing si evenimente

Intrebari

1. Ce este un layout manager?2. Ce componente Swing cunoasteti pentru

introducerea de date?3. Ce este programarea orientata pe evenimente?4. Enumerati cateva surse de evenimente si de

componente ce le pot trata.5. Ce facilitati are JDeveloper pentru tratarea

evenimentelor?

Page 19: C11 – LPO: Componente Swing si evenimente

Bibliografie

1. http://www.oracle.com/technetwork/java/javase/documentation/index.html

2. http://docs.oracle.com/javase/6/docs/

3. Ştefan Tanasă, Cristian Olaru, Ştefan Andrei, Java de la 0 la expert, Polirom, 2003, ISBN: 973-681-201-4.

4. Herber Schild, Java 2 - The Complete Reference, Fourth Edition, Osborne, 2001, ISBN: 0-07-213084-9.

5. Deitel H.M., Deitel P. J., Java - How to programm, Fith Edition, Prentice Hall, 2003, ISBN: 0-13-120236-7.

6. http://www.east.utcluj.ro/mb/mep/antal/downloads.html