Sunteți pe pagina 1din 13

Laborator Programare Java Lucrarea nr.

LUCRAREA NR. 5
Interfețe grafice cu utilizatorul. AWT.

1. Scopul lucrării

Această lucrare de laborator prezintă modul de realizare a unei interfețe grafice utilizator folosind
pachetul java.awt. Se vor prezenta câteva programe demonstative ce cuprind și tratarea
evenimentelor ce sunt generate de componentele grafice.

2. Crearea unei aplicații grafice folosind AWT

Programatorii în limbajul Java dispun de două familii de pachete de clase pentru realizarea
interfeţelor utilizator grafice, prezente în Java API: AWT şi Swing.
Java AWT (Abstract Windowing Toolkit - setul de creare a ferestrelor abstracte) este constituit din
pachetele java.awt, java.awt.event, java.awt.color, java.awt.font, java.awt.geom şi altele. Tot aici
se poate încadra şi pachetul java.applet, destinat realizării de appleturi.
Din motive de portabilitate AWT utilizează pentru reprezentarea pe ecran şi manipularea
obiectelor interfeţei grafice resursele proprii ale platformei pe care se execută programul. Un
dezavantaj ar fi că autorii lui au fost nevoiţi să ia în consideraţie numai acele clase de obiecte grafice,
care există într-o formă sau alta pe toate platformele. Aceasta a făcut ca numărul de clase de obiecte
grafice din Java AWT să fie destul de restrâns.
Interfețele grafice Swing au fost realizate ca o completare pentru AWT pentru a creşte
abilităţile limbajului relativ la grafică. Din aceasta familie fac parte pachetele javax.swing,
javax.swing.event şi altele. Multe din clasele AWT sunt necesare şi atunci când se lucrează în Swing.
Obiectele grafice din Swing au nu numai aceeaşi funcţionalitate, ci şi acelaşi aspect pe orice
platformă.
În acest laborator vor fi prezentate aplicații care folosesc doar pachetul java.awt, urmând ca în
laboratorul următor să se utilizeze și pachetul javax.swing.
Pașii pentru crearea unei interfețe grafice utilizator sunt:
➢ Creezi un cadru (Frame, Dialog sau Applet)
Frame fereastra = new Frame( );
➢ Creezi un element grafic (buton, casetă de text, panel, etc)

1
Laborator Programare Java Lucrarea nr. 5

Button buton = new Button(“Apasa-ma”);


➢ Adaugi elementul grafic în cadru
fereastra.add(buton);
➢ Afișezi cadrul ( îi stabilești dimensiune și îl faci vizibil)
fereastra.setSize(300,200);
fereastra.setVisible(true);

Exemplu: o fereastră cu un buton


// Fisierul GUI_1.java
package lab5AWT;

import java.awt.*;

class GUI_1 extends Frame {


public GUI_1(String s) {
//creare fereastra
Frame f = new Frame (s);
setBackground(Color.green);
//setare mod de dispunere a componentelor
setLayout(new FlowLayout());
//creare buton
Button buton1 = new Button("apasa-ma");
//adaugare buton
add(buton1);
}
}

// Fisierul Test_GUI_1.java
package lab5AWT;

public class Test_GUI_1 {


public static void main(String[] args) {
GUI_1 ecran = new GUI_1("Fereastra");
ecran.setSize(500, 100);
ecran.setVisible(true);
}
}

2
Laborator Programare Java Lucrarea nr. 5

Observăm că nu se întâmplă nimic când facem clic cu mouse-ul pe buton. Avem nevoie de două
lucruri:
- O metodă care să fie apelată atunci când utilizatorul execută clic pe buton (ceea ce dorește să
se întâmple în urma apăsării butonului)
- O modalitate de a afla când trebuie apelată metoda respectivă. Altfel spus, o modalitate prin
care să aflăm când a fost apăsat butonul. Ne interesează evenimentul generat de acționarea
unui buton de către utilizator.
Pașii sunt următorii:
➢ Crearea unei clase care implementează interfața Listener ( această interfață “ascultă”
evenimentele) potivită evenimentului.
O sursă de evenimente (cum ar fi un buton) creează un obiect eveniment atunci când
utilizatorul execută o acțiune care contează (clic pe buton). Pentru fiecare tip de eveniment
există o interfață Listener corespunzătoare. De exemplu, dacă vrem să tratăm evenimentele
de tip MouseEvent vom implementa interfața MouseListener, pentru obiecte de tip
WindowEvent vom implementa interfața WindowListener etc.
Interfața Listener definește metodele pe care sursa de evenimente le va apela la apariția unui
eveniment.
public clasa Gui implements ActionListener {… }
➢ În clasa creată implementăm toate metodele interfeței Listener-ului potrivit.
public void actionPerformed (ActionEvent ev) {
buton.setText( “Am fost apasat!”);
➢ Pentru a asculta un eveniment, trebuie să înregistră clasa în lista sursei de evenimente.
Pentru înregistrarea obiectului listener în lista sursei se folosește metoda:
addTipEvenimentListener( )
buton.assActionListener(this);
Exemplu: evenimentul unui buton
// Fisierul GUI_2.java
package lab5AWT;

import java.awt.*;
import java.awt.event.*;

class GUI_2 extends Frame implements ActionListener {

3
Laborator Programare Java Lucrarea nr. 5

public GUI_2(String titlu) {


super(titlu);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setLayout(null);
setSize(200, 120);
Button b1 = new Button("OK");
b1.setBounds(30, 30, 50, 70);
b1.setFont(new Font(" Arial ", Font.BOLD, 14));
b1.setBackground(Color.BLUE);
add(b1);
Button b2 = new Button(" Cancel ");
b2.setBounds(100, 30, 70, 50);
b2.setForeground(Color.green);
add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
}

// Metoda interfetei ActionListener


public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
System.out.println(e);
if (command.equals("OK"))
setTitle(" Confirmare !");
else if (command.equals(" Cancel "))
setTitle(" Anulare !");
}
}
// Fisierul Test_GUI_2.java
package lab5AWT;

public class Test_GUI_2 {


public static void main(String args[]) {
GUI_2 f = new GUI_2(" Button ");
f.setVisible(true);
}
}

Ce se întâmplă în situația în care nu avem nevoie să implementăm toate metodele interfeței


corespunzătoare evenimetului? Vom folosi clasele adaptor (vezi cursul).

Exemplu: folosirea adaptorilor

4
Laborator Programare Java Lucrarea nr. 5

// Fisierul GUI_3.java
package lab5AWT;

import java.awt.*;
import java.awt.event.*;

class GUI_3 extends Frame {


public GUI_3(String titlu) {
super(titlu);
setSize(400, 400);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
// Terminam aplicatia
System.exit(0);
}
});
final Label label = new Label("", Label.CENTER);
label.setBackground(Color.yellow);
add(label, BorderLayout.NORTH);
this.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// Desenam un cerc la fiecare click de mouse
label.setText(" Click ... ");
Graphics g = GUI_3.this.getGraphics();
g.setColor(Color.blue);
int raza = (int) (Math.random() * 50);
g.fillOval(e.getX(), e.getY(), raza, raza);
}
});
this.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
// Desenam un punct la coordonatele mouse - ului
Graphics g = GUI_3.this.getGraphics();
g.drawOval(e.getX(), e.getY(), 1, 1);
}
});
this.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
// Afisam caracterul tastat
label.setText("Ati tastat : " + e.getKeyChar() + "");
}
});
}
}

// Fisierul Test_GUI_3.java
package lab5AWT;

public class Test_GUI_3 {


public static void main(String args[]) {

5
Laborator Programare Java Lucrarea nr. 5

GUI_3 f = new GUI_3(" Test adaptori ");


f.setVisible(true);
}
}
În continuare sunt prezentate câteva aplicații demonstrative pentru a exemplifica diferite componente
grafice AWT.
Aplicația 1. Folosirea clasei Frame
package lab5AWT;

import java.awt.*;
import java.awt.event.*;

class GUI_4 extends Frame implements ActionListener {


// Constructorul
public GUI_4(String titlu) {
super(titlu);
// Tratam evenimentul de inchidere a ferestrei
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose(); // inchidem fereastra
// sau terminam aplicatia
System.exit(0);
}
});
//Eventual , schimbam gestionarul de pozitionare
setLayout(new FlowLayout());
// Adaugam componentele pe suprafata ferestrei
Button exit = new Button(" Exit ");
add(exit);
// Facem inregistrarea claselor listener
exit.addActionListener(this);
// Stabilim dimensiunile
pack(); // implicit
// sau explicit
// setSize (200 , 200) ;
}

// Implementam metodele interfetelor de tip listener


public void actionPerformed(ActionEvent e) {
System.exit(0);
}
}

package lab5AWT;

public class Test_GUI_4 {


public static void main(String args[]) {
// Cream fereastra
GUI_4 f = new GUI_4("O fereastra ");

6
Laborator Programare Java Lucrarea nr. 5

// O facem vizibila
f.setVisible(true);
}
}
Aplicația 2. Folosirea clasei Dialog
package lab5AWT;

import java.awt.*;
import java.awt.event.*;

// Fereastra principala
class GUI_5 extends Frame implements ActionListener {
public GUI_5(String titlu) {
super(titlu);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setLayout(new FlowLayout());
setSize(300, 80);
Button b = new Button(" Schimba titlul ");
add(b);
b.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {


FerDialog d = new FerDialog(this, "Dati titlul", true);
String titlu = d.raspuns;
if (titlu == null)
return;
setTitle(titlu);
}
}

class FerDialog extends Dialog implements ActionListener {


public String raspuns = null;
private TextField text;
private Button ok, cancel;

public FerDialog(Frame parinte, String titlu, boolean modala) {


super(parinte, titlu, modala);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
raspuns = null;
dispose();
}
});
text = new TextField("", 30);
add(text, BorderLayout.CENTER);
Panel panel = new Panel();

7
Laborator Programare Java Lucrarea nr. 5

ok = new Button("OK");
cancel = new Button(" Cancel ");
panel.add(ok);
panel.add(cancel);
add(panel, BorderLayout.SOUTH);
pack();
text.addActionListener(this);
ok.addActionListener(this);
cancel.addActionListener(this);
setVisible(true);
}

public void actionPerformed(ActionEvent e) {


Object sursa = e.getSource();
if (sursa == ok || sursa == text)
raspuns = text.getText();
else
raspuns = null;
dispose();
}
}

package lab5AWT;

public class Test_GUI_5 {


public static void main(String args[]) {
GUI_5 f = new GUI_5(" Fereastra principala ");
f.setVisible(true);
}
}
Aplicația 3. Folosirea clasei Menu
package lab5AWT;

import java.awt.*;
import java.awt.event.*;

public class GUI_6 {


public static void main(String args[]) {
Frame f = new Frame(" Test Menu ");
MenuBar mb = new MenuBar();
Menu fisier = new Menu(" File ");
fisier.add(new MenuItem(" Open "));
fisier.add(new MenuItem(" Close "));
fisier.addSeparator();
fisier.add(new MenuItem(" Exit "));
Menu optiuni = new Menu(" Options ");
optiuni.add(new MenuItem(" Copy "));
optiuni.add(new MenuItem("Cut"));
optiuni.add(new MenuItem(" Paste "));
Menu editare = new Menu(" Edit ");

8
Laborator Programare Java Lucrarea nr. 5

editare.add(new MenuItem(" Undo "));


editare.add(optiuni);
editare.addSeparator();
editare.add(new CheckboxMenuItem(" Bold "));
editare.add(new CheckboxMenuItem(" Italic "));
mb.add(fisier);
mb.add(editare);
f.setMenuBar(mb);
f.setSize(200, 100);
f.setVisible(true);
}
}
Aplicația 4. Folosirea clasei Label
package lab5AWT;

import java.awt.*;

public class GUI_7 {


public static void main(String args[]) {
Frame f = new Frame(" Label ");
Label nord, sud, est, vest, centru;
nord = new Label(" Nord ", Label.CENTER);
nord.setForeground(Color.blue);
sud = new Label("Sud ", Label.CENTER);
sud.setForeground(Color.red);
vest = new Label(" Vest ", Label.LEFT);
vest.setFont(new Font(" Dialog ", Font.ITALIC, 14));
est = new Label("Est ", Label.RIGHT);
est.setFont(new Font(" Dialog ", Font.ITALIC, 14));
centru = new Label(" Centru ", Label.CENTER);
centru.setBackground(Color.yellow);
centru.setFont(new Font(" Arial ", Font.BOLD, 20));
f.add(nord, BorderLayout.NORTH);
f.add(sud, BorderLayout.SOUTH);
f.add(est, BorderLayout.EAST);
f.add(vest, BorderLayout.WEST);
f.add(centru, BorderLayout.CENTER);
f.pack();
f.setVisible(true);
}
}
Aplicația 5. Folosirea clasei Checkbox
package lab5AWT;

import java.awt.*;
import java.awt.event.*;

class GUI_8 extends Frame implements ItemListener {


private Label label1, label2;

9
Laborator Programare Java Lucrarea nr. 5

private Checkbox cbx1, cbx2, cbx3;

public GUI_8(String titlu) {


super(titlu);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setLayout(new GridLayout(5, 1));
label1 = new Label(" Ingrediente Pizza :", Label.CENTER);
label1.setBackground(Color.orange);
label2 = new Label("");
label2.setBackground(Color.lightGray);
cbx1 = new Checkbox(" cascaval ");
cbx2 = new Checkbox(" sunca ");
cbx3 = new Checkbox(" ardei ");
add(label1);
add(label2);
add(cbx1);
add(cbx2);
add(cbx3);
setSize(200, 200);
cbx1.addItemListener(this);
cbx2.addItemListener(this);
cbx3.addItemListener(this);
}

// Metoda interfetei ItemListener


public void itemStateChanged(ItemEvent e) {
StringBuffer ingrediente = new StringBuffer();
if (cbx1.getState() == true)
ingrediente.append(" cascaval ");
if (cbx2.getState() == true)
ingrediente.append(" sunca ");
if (cbx3.getState() == true)
ingrediente.append(" ardei ");
label2.setText(ingrediente.toString());
}
}

package lab5AWT;

public class Test_GUI_8 {


public static void main(String args[]) {
GUI_8 f = new GUI_8(" Checkbox ");
f.setVisible(true);
}
}

10
Laborator Programare Java Lucrarea nr. 5

Aplicația 6. Folosirea clasei Choice


package lab5AWT;

import java.awt.*;
import java.awt.event.*;

class GUI_9 extends Frame implements ItemListener {


private Label label;
private Choice culori;

public GUI_9(String titlu) {


super(titlu);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setLayout(new GridLayout(4, 1));
label = new Label(" Alegeti culoarea ");
label.setBackground(Color.red);
culori = new Choice();
culori.add(" Rosu ");
culori.add(" Verde ");
culori.add(" Albastru ");
culori.select(" Rosu ");
add(label);
add(culori);
setSize(200, 100);
culori.addItemListener(this);
}

// Metoda interfetei ItemListener


public void itemStateChanged(ItemEvent e) {
switch (culori.getSelectedIndex()) {
case 0:
label.setBackground(Color.red);
break;
case 1:
label.setBackground(Color.green);
break;
case 2:
label.setBackground(Color.blue);
}
}
}

package lab5AWT;

public class Test_GUI_9 {


public static void main(String args[]) {

11
Laborator Programare Java Lucrarea nr. 5

GUI_9 f = new GUI_9(" Choice ");


f.setVisible(true);
}
}
Aplicația 7. Folosirea clasei List
package lab5AWT;

import java.awt.*;
import java.awt.event.*;

class GUI_10 extends Frame implements ItemListener {


private Label label;
private List culori;

public GUI_10(String titlu) {


super(titlu);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setLayout(new GridLayout(2, 1));
label = new Label(" Alegeti culoarea ", Label.CENTER);
label.setBackground(Color.red);
culori = new List(3);
culori.add(" Rosu ");
culori.add(" Verde ");
culori.add(" Albastru ");
culori.select(3);
add(label);
add(culori);
setSize(200, 200);
culori.addItemListener(this);
}

// Metoda interfetei ItemListener


public void itemStateChanged(ItemEvent e) {
switch (culori.getSelectedIndex()) {
case 0:
label.setBackground(Color.red);
break;
case 1:
label.setBackground(Color.green);
break;
case 2:
label.setBackground(Color.blue);
}
}
}

12
Laborator Programare Java Lucrarea nr. 5

package lab5AWT;

public class Test_GUI_10 {


public static void main(String args[]) {
GUI_10 f = new GUI_10(" List ");
f.setVisible(true);
}
}
Aplicația 8. Folosirea clasei Scrollbar
package lab5AWT;

import java.awt.*;
import java.awt.event.*;

class GUI_11 extends Frame implements AdjustmentListener {


private Scrollbar scroll;
private Label valoare;

public GUI_11(String titlu) {


super(titlu);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setLayout(new GridLayout(2, 1));
valoare = new Label("", Label.CENTER);
valoare.setBackground(Color.lightGray);
scroll = new Scrollbar(Scrollbar.HORIZONTAL, 0, 1, 0, 101);
add(valoare);
add(scroll);
setSize(200, 80);
scroll.addAdjustmentListener(this);
}

// Metoda interfetei AdjustmentListener


public void adjustmentValueChanged(AdjustmentEvent e) {
valoare.setText(scroll.getValue() + " %");
}
}

package lab5AWT;

public class Test_GUI_11 {


public static void main(String args[]) {
GUI_11 f = new GUI_11(" Scrollbar ");
f.setVisible(true);
}
}

13

S-ar putea să vă placă și