17
Inte rfa a gra fică ț (în engleză: Graphical User Interface sau GUI, pro nun at î n dou ă ț silabe: /'gu.i/, v. AFI) este nu mit sistemul de afi aj grafi c-vizu al pe un ecra n, situ at func ional ș ț între ut ilizator i dispozitive electronice cum ar fi ș computere, dispozitive personale de tip hand- held (playere MP3, playere media port abile, dispozitive de jucat), aparate electrocasnice i unele ș echipa mente de b irou. Pentr u a prezen ta toat e infor ma ile i ac iunil e dispo nibile, un GUI o feră ț ș ț  pictograme i indicatori vizuali, în contrast cu interfe ele bazate pe text, care oferă doar nume de ș ț comenz i (care trebuie tast ate) sau naviga ia text. ț Terme nul GUI est e legat ist oric de ecra nele bidi mensi onale cu rezo lu ie mare, capabilă să afi eze ț ș  infor ma ii de toate genur ile, în tr adi ia cercet ărilo r în domeniu l  ț ț informaticii  de la Xerox Palo Alto Research Centre (Centrul de Cercetare Palo Alto al companiei Xerox), prescurtat "PARC". Înainte de asta termenul GUI a fost aplicabil unor tipuri de interfe e de înaltă rezol u ie diferite, ț ț specifice unui domeniu anume, cum ar fi  jocurile video, sau care nu sunt limitate la ecranele  plate, ci se pot juca i pe ecrane volumetrice ( ș afi oa re 3D ș ). Laborator 9.  1. Pachetele AWT si Swing Aplicatiile realizate pana acum au avut interfata in mod text. Astfel, ecranul era privit ca o matrice de caractere. Pentru simplificarea utilizarii aplicatiilor complexe se prefera crearea unei interfete in mod grafic. In acest caz ecranul este considerat o matrice de puncte (pixeli) de diverse culori (de obicei fiecare pixel are asociate trei componente de culoare R-red, G-green, B-blue). O astfel de interfata poarta denumirea de "GUI" – Graphical User Interface. O interfata GUI esteformata din ferestre (portiuni dreptungiulare pe ecran). Ferestrele unei aplicatii contin "widgets" (elemente grafice de control) care permit interactiunea cu utilizatorul. Interactiunea cu utilizatorul se realizeaza prin mouse si tastatura. O interfata grafica se creaza de obicei cu sprijinul sitemului de operare (printr-o componenta numita server grafic). Limbajul Java pune la dispozitia programatorului doua biblioteci pentru realizarea unei interfete grafice: java.awt si javax.swing. Un program demonstrativ pentru pachetul java.swing se gaseste l a adresa:

Interfața grafică2

Embed Size (px)

DESCRIPTION

proiectare interfata graficaGUI

Citation preview

Page 1: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 1/16

Interfa a graficăț (în engleză: Graphical User Interface sau GUI, pronun at în douăț

silabe: /'gu.i/, v. AFI) este numit sistemul de afi aj grafic-vizual pe un ecran, situat func ionalș ț

între utilizator i dispozitive electronice cum ar fiș computere, dispozitive personale de tip hand-held (playere MP3, playere media portabile, dispozitive de jucat), aparate electrocasnice i uneleș

echipamente de birou. Pentru a prezenta toate informa ile i ac iunile disponibile, un GUI oferăț ș ț

 pictograme i indicatori vizuali, în contrast cu interfe ele bazate pe text, care oferă doar nume deș țcomenzi (care trebuie tastate) sau naviga ia text.ț

Termenul GUI este legat istoric de ecranele bidimensionale cu rezolu ie mare, capabilă să afi ezeț ș  informa ii de toate genurile, în tradi ia cercetărilor în domeniul ț ț informaticii de la Xerox PaloAlto Research Centre (Centrul de Cercetare Palo Alto al companiei Xerox), prescurtat "PARC".Înainte de asta termenul GUI a fost aplicabil unor tipuri de interfe e de înaltă rezolu ie diferite,ț ț

specifice unui domeniu anume, cum ar fi jocurile video, sau care nu sunt limitate la ecranele plate, ci se pot juca i pe ecrane volumetrice (ș afi oare3Dș ).

Laborator 9.

 

1. Pachetele AWT si Swing

Aplicatiile realizate pana acum au avut interfata in mod text. Astfel, ecranulera privit ca o matrice de caractere.

Pentru simplificarea utilizarii aplicatiilor complexe se prefera crearea unei

interfete in mod grafic. In acest caz ecranul este considerat o matrice depuncte (pixeli) de diverse culori (de obicei fiecare pixel are asociate trei

componente de culoare R-red, G-green, B-blue). O astfel de interfata poartadenumirea de "GUI" – Graphical User Interface.

O interfata GUI esteformata din ferestre (portiuni dreptungiulare pe ecran).

Ferestrele unei aplicatii contin "widgets" (elemente grafice de control) carepermit interactiunea cu utilizatorul.

Interactiunea cu utilizatorul se realizeaza prin mouse si tastatura.

O interfata grafica se creaza de obicei cu sprijinul sitemului de operare(printr-o componenta numita server grafic).

Limbajul Java pune la dispozitia programatorului doua biblioteci pentru

realizarea unei interfete grafice: java.awt si javax.swing.

Un program demonstrativ pentru pachetul java.swing se gaseste la adresa:

Page 2: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 2/16

http://java.sun.com/products/plugin/1.2/demos/SwingSet/SwingSetApplet.html

Pachetele awt si swing contin clase pentru gestionarea completa a unei

interfete.

In figura sunt expuse clasele corespondente cu cele din awt :

 

In plus fata de pachetul standard awt, pachetul swing adauga noi clase care

permit imbunatatirea interfetei realizate. In figura urmatoare suntprezentate clasele noi introduse de catre swing:

Page 3: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 3/16

 

2. Ferestre

Oricarei aplicatii grafice ii corespunde o fereastra principala (de tip FRAME) siuna sau mai multe ferestre aditionale.

In swing exista trei clase pentru gestionarea ferestrelor: Jframe, JWindow si

JDialog.

Clasa JFrame permite crearea unei ferestre de aplicatie. Fereastra are o barade titlu, o margine, butoane de minimizare, maximizare si inchidere

(butoane "system").

Clasa JWindow permite crearea unei ferestre fara bara de titlu, meniu,

butoane sistem etc.

Clasa JDialog permite crearea de ferestre de dialog. Ferestrele de dialog suntdependente de ferestrele parinte de tip Frame. O fereastra de dialog poate fi

Page 4: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 4/16

modala (blocheaza aplicatia pana la inchiderea dialogului) sau nemodala (nublocheaza).

Pentru a crea ferestre de afisare a unor mesaje se poate utiliza direct o

functie statica, fara a mai crea explicit un obiect tip dialog:

 JOptionPane.showMessageDialog(frame, “Mesajul meu.");

Pentru ferestre de dialog standard exista clase specializate: JFileChooser si

JColorChooser. Acestea pot fi utilizate pentru a selecta un fisier sau a alege oculoare.

Crearea unei ferestre principale:

 public static void main(String args[]) { JFrame win = new JFrame(“Titlul ferestrei");

win.setSize(200, 200);win.show();

 }

Pentru a accesa continutul unei ferestre se va folosi functia

getContentPanel():

Container c = win.getContentPane();

Pentru a obtine inchiderea automata a aplicatiei atunci cand se apasa

butonul de Close, se va utiliza metoda:

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Pentru a organiza elementele intr-o fereastra se vor utiliza panouri. Swing

pune la dispozitie doua tipuri de panouri: JPanel (panou simplu) siJScrollPane (panou cu derulare).

Activitate:

Compilati si rulati programul urmator (fisierul WinAplic.java).

import javax.swing.*;import java.awt.*;

class WinAplic {

public static void main(String args[]) {

Page 5: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 5/16

JFrame win = new JFrame("Aplicatia mea");

win.getContentPane().add( new JLabel("Utilizare swing!"));

win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);win.pack();win.show();

}}

3. Elemente de control (widgets)

3.1 Butoane

Butoanele sunt elemente de control care, prin apasare, pot genera o actiune.

Despre cum se asociaza o actiune cu un buton se va vorbi in subcapitolulintitulat "gestionarea evenimentelor".

Butoanele deriva din clasa JButton. In costructor primesc textul afisat pe

buton. Prin procedura setMnemonic se pot asocia taste de apelare rapida(shortcut).

Pentru a adauga un cuvant de comanda asociat butonului (cuvant ce va fi

testat pentru efectuarea actiunii asociate) se foloseste metodaaddActionCommand().

 JButton buton = new JButton("I'm a Swing button!");

buton.setMnemonic('i');buton.addActionCommand("butonulSwing");

 JPanel panouButon = new JPanel(); panouButon.add(buton);

3.2 CheckBox 

Butoanele de marcaj sunt elemente de control care retin o anumita stare. In

plus fata de butoanele simple, pentru ele se pot apela metodele

setSelected(boolen marcat) pentru a stabili marcajul prin program,

respectiv getSelected() pentru a afla starea marcajului.

Page 6: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 6/16

cb1 = new JCheckBox(“Optiune1");cb1.setMnemonic(KeyEvent.VK_1);

cb1.setSelected(true); JPanel checkPanel = new JPanel();

checkPanel.setLayout(new GridLayout(0, 1));

checkPanel.add(cb1);

3.3 RadioButton

Butoanele radio sunt elemente de control care retin o anumita stare, la fel cu

cele de marcaj. Deosebirea principala consta in faptul ca toate butoaneleradio incluse in acelasi grup logic sunt mutual exclusive. Pentru gestionarea

grupurilor de butoane radio se va folosi clasa ButtonGroup, respectivmetoda add() care adauga un buton la grup.

Si pentru butoanele radio se pot apela metodele setSelected(boolen

marcat) pentru a stabili marcajul prin program, respectiv getSelected()pentru a afla starea marcajului.

 // Create the radio buttons.

JRadioButton birdButton = new JRadioButton(“Pasare”);birdButton.setMnemonic(KeyEvent.VK_B);

birdButton.setActionCommand(“Pasare”);

birdButton.setSelected(true);JRadioButton catButton = new JRadioButton(“Pisica”);

catButton.setMnemonic(KeyEvent.VK_C);

catButton.setActionCommand(“Pisica”);…

 // Group the radio buttons.ButtonGroup group = new ButtonGroup();

group.add(birdButton);group.add(catButton);

… // Put the radio buttons in a column in a panel

JPanel radioPanel = new JPanel();

radioPanel.setLayout(new GridLayout(0, 1));radioPanel.add(birdButton);

radioPanel.add(catButton);

Activitate:

Compilati si rulati programul urmator (fisierul Widgets.java).

import javax.swing.*;

Page 7: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 7/16

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

class Butoane extends JPanel {

public Butoane() {JButton b1 = new JButton("ButonA");b1.setMnemonic(KeyEvent.VK_A);JButton b2 = new JButton("ButonB");b2.setMnemonic(KeyEvent.VK_B);this.setLayout(new GridLayout(1,0));add(b1);add(b2);

}}

class CheckBoxuri extends JPanel {

public CheckBoxuri() {JCheckBox cb1 = new JCheckBox("Optiune1");cb1.setMnemonic(KeyEvent.VK_1);cb1.setSelected(true);JCheckBox cb2 = new JCheckBox("Optiune2");cb2.setMnemonic(KeyEvent.VK_2);cb2.setSelected(true);JCheckBox cb3 = new JCheckBox("Optiune3");

cb3.setMnemonic(KeyEvent.VK_3);cb3.setSelected(true);this.setLayout(new GridLayout(0,1));add(cb1);add(cb2);add(cb3);

}}

class ButoaneRadio extends JPanel {

public ButoaneRadio() {// Creare radio butoaneJRadioButton butonAlb = new JRadioButton("Alb");butonAlb.setMnemonic(KeyEvent.VK_L);butonAlb.setActionCommand("Alb");butonAlb.setSelected(true);JRadioButton butonRosu = new JRadioButton("Rosu");butonRosu.setMnemonic(KeyEvent.VK_R);

Page 8: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 8/16

butonRosu.setActionCommand("Rosu");JRadioButton butonVerde = new JRadioButton("Verde");butonVerde.setMnemonic(KeyEvent.VK_V);butonVerde.setActionCommand("Verde");

// Gruparea butoanelor ButtonGroup group = new ButtonGroup();group.add(butonAlb);group.add(butonRosu);group.add(butonVerde);// Adaugarea butoanelor this.setLayout(new GridLayout(0,1));add(butonAlb);add(butonRosu);add(butonVerde);

}

}

 public class Widgets extends JFrame {

public static void main(String args[]) {Widgets app = new Widgets();

Butoane panouButoane = new Butoane();CheckBoxuri panouCheckBoxuri = new CheckBoxuri();ButoaneRadio panouButoaneRadio = new ButoaneRadio();

JPanel panou = new JPanel();panou.setLayout(new GridLayout(0,1));panou.add(panouButoane);panou.add(panouCheckBoxuri);panou.add(panouButoaneRadio);panou.setBorder(

BorderFactory.createEmptyBorder(20, 20, 20, 20));app.getContentPane().add(panou);app.pack();app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);app.show();

}}

3.4 ListBox

Page 9: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 9/16

ListBox-urile afiseaza liste de optiuni. Ele se compun dintr-un element carese ocupa de vizualizare (derivat din clasa JList), respectiv dintr-un element

care se ocupa cu gestionarea continutului (derivat din ListModel).

Interfata ListModel pune la dispozitie o metoda addElement() care permite

adaugarea unei noi optiuni in lista.

Constructorul clasei JList primeste un obiect de tip ListModel pe care il va

afisa pe ecran. Pentru a avea la dispozitie bare de derulare asociate listei,aceasta va trebui inclusa intr-un element de tip JScrollPane (un panou

derulant).

Aditional listelor simple se pot defini si liste cu derulare (de tip ComboBox).

Acestea afiseaza in mod obisnuit o singura optiune din lista iar pentru a

accesa restul optinulor lista trebuie derulata de la un buton special. Listelederulante nu trebuie adaugate intr-un JScrollPane.

ListModel listModel = new DefaultListModel();

listModel.addElement(“Linie1");…

 JList list = new JList(listModel);list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

list.setSelectedIndex(0);

 JScrollPane listScrollPane = new JScrollPane(list);--------

String[] culori = { "Alb", "Negru", "Rosu", "Verde", "Albastru" };

 JComboBox listaCulori = new JComboBox(culori);listaCulori.setSelectedIndex(1); // selecteaza elementul 2 (Negru)

listaCulori.setEditable(true);

Activitate:

Compilati si rulati programul urmator (fisierul Liste.java).

import javax.swing.*;import java.awt.*;import java.awt.event.*;

class ListBox extends JScrollPane {public ListBox() {

DefaultListModel listModel = new DefaultListModel();listModel.addElement("Linie1");listModel.addElement("Linie2");listModel.addElement("Linie3");

Page 10: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 10/16

JList list = new JList(listModel);list.setVisibleRowCount(3);list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);list.setSelectedIndex(0);

setViewportView(list);}

}

class ComboBox extends JPanel {public ComboBox() {

String[] culori = { "Alb", "Negru", "Rosu", "Verde", "Albastru" };JComboBox listaCulori = new JComboBox(culori);listaCulori.setSelectedIndex(1); // selecteaza elementul 2 (Negru)listaCulori.setEditable(true);

add(listaCulori);}

}

 public class Liste extends JFrame {

public static void main(String args[]) {Liste app = new Liste();

ListBox panouLista = new ListBox();ComboBox panouCombo = new ComboBox();

JPanel panou = new JPanel();panou.setLayout(new GridLayout(0,1));panou.add(panouLista);panou.add(panouCombo);panou.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));app.getContentPane().add(panou);app.pack();app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);app.show();

}}

3.4 Elemente pentru editare text

Page 11: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 11/16

Pentru a putea afisa, respectiv edita o linie de text se pot utiliza elemente detip JTextField. Acestea permit afisarea si editarea unei linii de text, avand

metode precum setText() si getText().

Pentru a edita mai multe linii de text se poate folosi clasa JTextPane.

4. Gestionarea evenimentelor (listenere)

Aplicatiile GUI sunt aplicatii orientate pe evenimente. In gestionarea

evenimentelor intervin obiecte de tip Listener si Event.

Pentru a trata evenimentele ce apar intr-o aplicatie trebuie:

1.Implementata o clasa derivata dintr-o clasa Listener:

 public class MyClass implements XXXListener { 

public void eveniment(XXXEvent e) { ...//tratarea evenimentului... } } 

2. Inregistrata o instanta a clasei precedente pe post de listner

pentru o componenta derivata din JComponent:

oComponenta.addActionListener(instanceOfMyClass);

Exemple de tipuri de listnere sunt prezentate in figura alaturata:

 

Page 12: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 12/16

Pentru a trata evenimentul de apasare pe un buton se va utiliza clasaActionListener.

 /** Listens to the button. */ 

class ListenerPtButon implements ActionListener { 

private int numClicks = 0;public void actionPerformed(ActionEvent e) { 

numClicks++;

((JButton)e.getSource()).setText(“Apasat: “ + numClicks);

 } }

 JButton butonulMeu = new JButton(“Apasa: 0”);butonulMeu. addActionListener(new ListenerPtButon()); 

Activitate:

Compilati si rulati programul urmator (fisierul ButtonListener.java).

import javax.swing.*;import javax.swing.border.*;import java.awt.*;import java.awt.event.*;

class ListenerPtButoane implements ActionListener {private int numClicks = 0;

private int indiceCuloare = 0;final private Color culori[] = {Color.LIGHT_GRAY, Color.RED,Color.ORANGE, Color.PINK };

public void actionPerformed(ActionEvent e) {JButton butonApasat = (JButton)e.getSource();if(butonApasat.getActionCommand().equals("contor")) {

numClicks++;butonApasat.setText("Apasat: " + numClicks);

}

if(butonApasat.getActionCommand().equals("culoare")) {indiceCuloare++;if(indiceCuloare == culori.length)

indiceCuloare = 0;butonApasat.setBackground(culori[indiceCuloare]);

}if(butonApasat.getActionCommand().equals("exit")) {

System.exit(0);

Page 13: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 13/16

}}

}

 public class ButtonListener extends JFrame {

public static void main(String args[]) {ButtonListener app = new ButtonListener();

JButton butonulNumara = new JButton("Apasa: 0");butonulNumara.setActionCommand("contor");butonulNumara.setAlignmentX(Component.CENTER_ALIGNMENT);JButton butonulCulori = new JButton("Schimba culoarea");butonulCulori.setActionCommand("culoare");butonulCulori.setAlignmentX(Component.CENTER_ALIGNMENT);

JButton butonulExit = new JButton("Exit");butonulExit.setActionCommand("exit");butonulExit.setAlignmentX(Component.CENTER_ALIGNMENT);

butonulNumara.addActionListener(new ListenerPtButoane()); butonulCulori.addActionListener(new ListenerPtButoane()); butonulExit.addActionListener(new ListenerPtButoane());

JPanel panou = new JPanel();panou.setLayout(new BoxLayout(panou, BoxLayout.Y_AXIS));panou.add(butonulNumara);

panou.add(Box.createRigidArea(new Dimension(0, 10)));panou.add(butonulCulori);panou.add(Box.createRigidArea(new Dimension(0, 10)));panou.add(butonulExit); panou.setBorder(

BorderFactory.createEmptyBorder(20, 20, 20, 20));app.getContentPane().add(panou);app.pack();app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);app.show();

}

}

Pentru a raspunde marcarii butoanelor de marcaj sau de tip radio se va

apela la clasele ItemListener si ActionListener:

 /** Listens to the check boxes. */

class CheckBoxListener implements ItemListener {

Page 14: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 14/16

public void itemStateChanged(ItemEvent e) {int index = 0;

Object source = e.getItemSelectable();

if (source == cb1) {

// s-a actionat asupra primului buton} else if (source == cb2) {

// s-a actionat asupra celui de al doilea buton

} else …

if (e.getStateChange() == ItemEvent.DESELECTED)// butoul (oarecare) s-a deselectat

}}

 /** Listens to the radio buttons. */

class RadioListener implements ActionListener {public void actionPerformed(ActionEvent e) {

System.out.println(“Selectat:”+e.getActionCommand());}

}

Activitate:

Compilati si rulati programul urmator (fisierul Liste1.java).

import javax.swing.*;

import javax.swing.event.*;import java.awt.*;import java.awt.event.*;

class ListBox1 extends JScrollPane {private JList list;

public JList getList() {return list;

}

public ListBox1() {DefaultListModel listModel = new DefaultListModel();listModel.addElement("Linie1");listModel.addElement("Linie2");listModel.addElement("Linie3");list = new JList(listModel);list.setVisibleRowCount(3);list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

Page 15: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 15/16

list.setSelectedIndex(0);setViewportView(list);

}}

class SelectieLista implements ListSelectionListener {private JTextArea consola;ListModel listModel;

public SelectieLista(JTextArea output, ListModel model) {super();consola = output;listModel = model;

}

public void valueChanged(ListSelectionEvent e) { boolean isAdjusting = e.getValueIsAdjusting();ListSelectionModel lsm = (ListSelectionModel)e.getSource();if(!isAdjusting) {

int primIndex = e.getFirstIndex();int ultimIndex = e.getLastIndex();for (int i = primIndex; i<=ultimIndex; i++)

if(lsm.isSelectedIndex(i))consola.append("\nSelectat: "+listModel.getElementAt(i));

}

}}

 public class Liste1 extends JFrame {

public static void main(String args[]) {Liste1 app = new Liste1();

ListBox1 panouLista = new ListBox1();JTextArea consola = new JTextArea();ListSelectionModel listSelectionModel = panouLista.getList().getSelectionModel();

listSelectionModel.addListSelectionListener(new SelectieLista(consola, panouLista.getList().getModel()));

JPanel panou = new JPanel();panou.setLayout(new GridLayout(0,1));panou.add(panouLista);panou.add(new JScrollPane(consola));panou.setBorder(

Page 16: Interfața grafică2

7/16/2019 Interfața grafică2

http://slidepdf.com/reader/full/interfaa-grafica2 16/16

BorderFactory.createEmptyBorder(20, 20, 20, 20));app.getContentPane().add(panou);app.pack();app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

app.show();consola.append("Ready...");

}}

5. Teme

Tema1. Rulati exemplele prezentate si studiati in Java API metodele puse la

dispozitie de clasele: JFrame, JPanel, JScrollPane, JTextField, JButton,JCheckBox, JRadioButton, JList, JComboBox, JTextPane.

Tema2. Creati o fereastra care afiseaza intr-o lista nume de animale

domestice si apoi, la selectie le scrie numele selectate intr-o consola de tipJTextPane.

Tema3 (optionala). Creati o fereastra care are un text afisat intr-un JLabel si

trei butoane ("Text1", "Text2', "Text3"). La apasarea unuia dintre cele treibutoane se va schimba corespunzator textul afisat de JLabel si de asemenea

culoarea acetuia.