Upload
robertcozianu
View
43
Download
3
Embed Size (px)
DESCRIPTION
Proiectare interfete JAVA
Citation preview
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!