Documente Academic
Documente Profesional
Documente Cultură
Programare Java
2020
Interfața grafică cu utilizatorul
Cuprins
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
1. Introducere
2. AWT – generalități
3. Clasa Component
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
4. Clasa Container
5. Layout Manager
6. Clasa Panel
7. Evenimente generate de componente
8. Componente de tip ferestre
9. Componente AWT de lucru cu meniuri
10. Componente AWT simple
Interfața grafică cu utilizatorul
1. Introducere
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
GUI – este formată din ferestre, acestea conţin elemente grafice de control
(widgets) care permit interacţiunea cu utilizatorul.
➢ Limbajul Java pune la dispoziția programatorului trei API-uri pentru
realizarea unei interfețe grafice: AWT, Swing și JavaFX.
AWT (Abstract Windowing Toolkit) API – a fost introdusă în JDK 1.0
Swing – face parte din Java Foundation Classes (apare cu Java 2) și
introduce noi componente în vederea dezvoltării de interfețe grafice mai
evoluate.
Interfața grafică cu utilizatorul
1. Introducere
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
așezate pe o suprafață de afișare, care poate fi o fereastră sau un applet, și vor deveni vizibile în
momentul în care suprafața pe care sunt afisate va fi vizibilă, numită container și reprezintă o
instanță a unei clase derivate din Container. Clasa Container este o subclasă aparte a lui
Component, fiind la rândul ei superclasa tuturor suprafețelor de afișare Java.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
❖ AWTEvent
java.awt.event.
Interfața grafică cu utilizatorul
2. AWT – generalități
Exemplu: o fereastră cu un buton
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.awt.*;
class Interfata extends Frame
{ public Interfata(String s)
{ //creare fereastra
Frame f = new Frame (s);
setBackground(Color.green);
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Componentele AWT sunt definite de clase din pachetul java.awt, aceste clase
(pentru a grupa mai multe obiecte de acest tip există clasa CheckBoxGroup).
3. Clasa Component
Interfața grafică cu utilizatorul
Interfața grafică cu utilizatorul
3. Clasa Component
Metode ale clasei Component
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
colțului stânga sus (x,y) a formei rectangulare. Poziția este relativă la componenta părinte.
➢ public boolean getCursor( )
➢ public void setCursor(Cursor c)
-returnează/setează forma cursorului. Java permite o serie de tipuri de cursor, definite prin
constantele din clasa Cursor (DEFAULT_CURSOR, CROSSHAIR_CURSOR, TEXT_CURSOR,
WAIT_CURSOR, HAND_CURSOR)
➢ public void list( )
➢ public void list(PrintStream out)
➢ public void list(PrintWriter out)
- afișează o serie de informații legate de componentă la consola standard sau la alte stream-
uri.
Interfața grafică cu utilizatorul
4. Clasa Container
Suprafețe de afișare
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
➢ fiecare obiect de tip Container (Applet, Frame, Panel etc) are asociat un
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
LayoutManager.
❖ FlowLayout
❖ BorderLayout
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
❖ GridLayout
❖ CardLayout
❖ GridBagLayout
Pe langa aceşti gestionari, mai există şi cei din modelul Swing care vor fi prezentaţi în
-Implicit, componentele sunt centrate pe fiecare linie iar distanța implicită între
applet-urilor.
Interfața grafică cu utilizatorul
5. Layout Manager
Exemplu: gestionarul FlowLayout
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
- împarte suprafața de afișare în cinci regiuni: sud, nord, est, vest și centru.
componentei fiind calculată astfel încât să ocupe întreg spațiul de afișare din regiune.
-Pentru a adăuga mai multe componente grafice într-una din cele cinci regiuni, acestea
atributele statice ale clasei BorderLayout: NORTH, SOUTH, EAST, WEST, CENTER.
respectiv
CardLayout.
Interfața grafică cu utilizatorul
5. Layout Manager
Exemplu: gestionarul CardLayout
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
}
public void actionPerformed ( ActionEvent e) {
CardLayout gestionar = ( CardLayout ) tab. getLayout ();
gestionar . show (tab , e. getActionCommand ());
}
public static void main ( String args []) {
TestLayout f = new TestLayout ();
f. setVisible (true);
}
}
Interfața grafică cu utilizatorul
5. Layout Manager
Gestionarul GridBagLayout
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
-Suprafața de afișare este un tabel, însă numărul de linii și de coloane sunt determinate
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
-Modul de afișare a unei componente se specifică prin asocierea unui obiect de tip
- Cele mai utilizate constrângeri sunt specificate prin următoarele variabile din clasa
GridBagConstraints:
componenta.
➢ fill – specifică dacă o componentă va ocupa tot spațiul pe care îl are destinat, valorile
➢ anchor – folosită atunci când componenta este mai mică decât suprafața sa
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
valoarea 1.
Interfața grafică cu utilizatorul
6. Clasa Panel
- Oferă un cadru de plasare a altor componente grafice și nu are o
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
reprezentare vizibilă.
- clasa Panel este derivată din clasa Container, nu adaugă alte metode celor
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
unui buton de mouse, manevrarea barei de derulare, marcarea unei opțiuni într-un meniu,
închiderea unei ferestre etc).
➢ Componentele care generează evenimente se mai numesc și surse de evenimente.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
triggered, the source object creates an event object to capture the action (e.g., mouse-
click x and y, texts entered, etc). This event object will be messaged to all the registered
listener object(s), and an appropriate event-handler method of the listener(s) is called-
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
back to provide the response. In other words, triggering a source fires an event to all its
listener(s), and invoke an appropriate event handler of the listener(s).
➢To express interest for a certain source's event, the listener(s) must be registered with
the source. In other words, the listener(s) "subscribes" to a source's event, and the
source "publishes" the event to all its subscribers upon activation. This is known as
subscribe-publish or observable-observer design pattern.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
➢A source fires an event when triggered. For example, clicking a Button fires an ActionEvent, clicking a
mouse button fires MouseEvent, typing a key fires KeyEvent.
How the source and listener understand each other? The answer is via an agreed-upon interface. For
example, if a source is capable of firing an event called XxxEvent (e.g., MouseEvent) involving various
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
methods: addXxxListener() and removeXxxListener() to add and remove a XxxEvent listener from this
list. Take note that the addXxxListenser() takes a XxxListener object as its sole parameter. In other
words, it can only add objects of the type XxxListener, and its sub-type. Since XxxListener is an
interface, you cannot create instance of XxxListener, but need to create instance of a subclass
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
➢ Exemplu:
...
}
}
3
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
Tratarea evenimentelor – pe scurt:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
3. Declară clasa care “ascultă” evenimente, clasa implementează interfeţe specifice fiecărui tip de
eveniment – acestea descriu metode ce vor fi apelate automat la apariţia evenimentelor.
import java.awt.*;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
implements WindowListener
import java.awt.event.*;
public class Handler {
public void windowActivated(WindowEvent e) {}
public void windowClosed(WindowEvent e) {}
public void windowClosing(WindowEvent e) {
Window w = e.getWindow();
w.setVisible(false);
w.dispose();
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {}
public void windowDeiconified(WindowEvent e) {}
public void windowIconified(WindowEvent e) {}
public void windowOpened(WindowEvent e) {}
}
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
Tratarea evenimentelor – pe scurt:
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
import java.awt.*;
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
f.addWindowListener(h);
f.setVisible(true);
System.out.println(“Finalizare GUI");
} // main
} // clasa HelloGUI
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
Tipuri de evenimente:
1) Evenimente de nivel jos (generate la acțiuni directe ale utilizatorului asupra
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
componentei)
❖ ComponentEvent
- este generat când componenta este ascunsă, mutată, redimensionată, afișată.
-Pentru a răspunde la acest eveniment trebuie implementată interfața
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
ComponentListener:
public interface ComponentListener extends EventListener {
public abstract void componentResized(ComponentEvent e);
public abstract void componentMoved(ComponentEvent e);
public abstract void componentShown(ComponentEvent e);
public abstract void componentHidden(ComponentEvent e); }
❖FocusEvent
-Aceste eveniment este legat de obținerea sau pierderea focusului.
- dacă o componentă este în focus atunci evenimentele generate de tastatură îi sunt
adresate respectivei componente. Interfața care trebuie implementată este
FocusListener:
public interface FocusListener extends EventListener {
public abstract void focusGained(FocusEvent e);
public abstract void focusLost(FocusEvent e); }
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
1) Evenimente de nivel jos
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
❖ KeyEvent
-este generat la acțiunea tastaturii (apăsare, eliberare taste, tastare)
-Interfața care trebuie implementată este KeyListener:
public interface KeyListener extends EventListener {
public abstract void keyTyped(KeyEvent e);
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
❖ WindowEvent
-Eveniment legat de acțiuni asupra ferestrelor: minimizare, maximizare, deschidere,
închidere etc.
-Interfața care trebuie implementată este WindowListener:
public interface WindowListener extends EventListener {
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
❖ ActionEvent
-Acționare
- Interfața care trebuie implementată este ActionListener:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
❖ ItemEvent
- schimbarea stării
- Interfața care trebuie implementată este ItemListener:
public interface ItemListener extends EventListener {
public abstract void itemStateChanged(ItemEvent e);
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
}
❖ TextEvent
- schimbarea textului
- Interfața care trebuie implementată este TextListener:
public interface TextListener extends EventListener {
public abstract void textValueChanged(TextEvent e);
}
Interfața grafică cu utilizatorul
7. Evenimente generate de componente
Clase adaptori
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
adaptor sunt cele care definesc o singură metodă și deci crearea unei clase adaptor nu are
sens.
Interfața Adaptor
ActionListener nu are
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
AdjustmentListener nu are
ComponentListener ComponentAdapter
ContainerListener ContainerAdapter
FocusListener FocusAdapter
ItemListener nu are
KeyListener KeyAdapter
MouseListener MouseAdapter
MouseMotionListener MouseMotionAdapter
TextListener nu are
WindowListener WindowAdapter
Interfața grafică cu utilizatorul
8. Componente de tip ferestre
1)Clasa Window
- Implementează o fereastră grafică fără titlu și fără chenar.
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
- Fereastra de dialog este dependentă de o altă fereastră numită fereastră părinte, când
fereastra părinte este distrusă sunt distruse și ferestrele sale de dialog, iar când
fereastra părinte este minimizată ferestrele de dialog sunt făcute invizibile.
- Pot fi de două tipuri:
❖ modale: care blochează accesul la fereastra părinte în momentul deschiderii lor, cum
sunt ferestrele de introducere a unor date, de alegere a unui fișier, de selectare a unei
opțiuni etc.
❖ nemodale: care nu blochează fluxul de intrare către fereastra părinte, cum ar fi dialogul
de căutare a unui cuvânt într-un fișier.
- implicit, o fereastră de dialog este nemodală și invizibilă.
Interfața grafică cu utilizatorul
8. Componente de tip ferestre
3) Clasa Dialog
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
➢ Are constructorii:
FileDialog(Frame parent)
FileDialog(Frame parent, String title)
FileDialog(Frame parent, String title, int mod)
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
- Este o clasă abstractă derivată din clasa Object și este superclasa tuturor
claselor de tip meniu.
- Câteva dintre metodele clasei sunt:
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
3) Clasa MenuItem
- Este o clasă derivată din clasa MenuComponent și reprezintă clase ce
implementează un meniu.
- La selecția unui meniu, acesta generează un eveniment de tipul
ActionEvent.
4) Clasa Menu
- Este o clasă derivată din clasa MenuItem și este componenta ce oferă
posibilitatea realizării unei structuri verticale de meniuri.
Interfața grafică cu utilizatorul
9. Componente AWT de lucru cu meniuri
5) Clasa CheckboxMenuItem
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
- Definește o listă de opțiuni din care utilizatorul poate selecta una singură.
- La un moment dat, o singură opțiune din listă este vizibilă
- Este o componentă grafică de tipul pop-up menu.
UNIVERSITATEA TEHNICĂ “GH. ASACHI” DIN IAŞI
Interfața grafică cu utilizatorul
10. Componente AWT simple
4) Clasa List
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI
scrollbar.
Interfața grafică cu utilizatorul
10. Componente AWT simple
5) Clasa Checkbox
FACULTATEA DE ELECTRONICĂ, TELECOMUNICAŢII ŞI TEHNOLOGIA INFORMAŢIEI