Documente Academic
Documente Profesional
Documente Cultură
Aplicațiile realizate până acum au avut interfața în mod text. Astfel, ecranul era privit ca o matrice de
caractere. Pentru simplificarea utilizării aplicațiilor complexe se preferă crearea unei interfețe în
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
interfață poarta denumirea de "GUI" – Graphical User Interface.
O interfață GUI este formată din ferestre (porțiuni dreptungiulare pe ecran). Ferestrele unei aplicații
conțin așa numitele "widgets" (elemente grafice de control) care permit interacțiunea cu utilizatorul.
Limbajul Java pune la dispoziția programatorului două biblioteci pentru realizarea unei interfețe
grafice: java.awt și javax.swing.
Pachetele awt și swing conțin clase pentru gestionarea completă a unei interfețe.
7.2. Ferestre
Oricărei aplicații grafice îi corespunde o fereastră principală (de tip FRAME) și una sau mai multe
ferestre adiționale.
In swing există trei clase pentru gestionarea ferestrelor: Jframe, JWindow și JDialog.
Clasa JFrame permite crearea unei ferestre de aplicație. Fereastra are o bara de titlu, o margine,
butoane de minimizare, maximizare și inchidere (butoane "system").
Clasa JWindow permite crearea unei ferestre fără bara de titlu, meniu, butoane sistem etc.
Clasa JDialog permite crearea de ferestre de dialog. Ferestrele de dialog sunt dependente de
ferestrele părinte de tip Frame. O fereastra de dialog poate fi modală (blocheaza aplicația până la
închiderea dialogului) sau nemodală (nu blochează).
Pentru a crea ferestre de afișare a unor mesaje se poate utiliza direct o funcție statică, fără a mai crea
explicit un obiect tip dialog:
Pentru ferestre de dialog standard există clase specializate: JFileChooser și JColorChooser. Acestea
pot fi utilizate pentru a selecta un fișier sau a alege o culoare.
Container c = win.getContentPanel();
Pentru a obține închiderea automată a aplicației atunci când se apasă butonul Close, se va utiliza
metoda:
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Pentru a organiza elementele într-o fereastră se vor utiliza panouri. Swing pune la dispozitie două
tipuri de panouri: JPanel (panou simplu) și JScrollPane (panou cu derulare).
Sarcina 1 : Rulați programul următor identificând rolul fiecărei clase și a constructorilor
corespunzători:
import javax.swing.*;
import java.awt.*;
class WinAplic {
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.pack();
win.show();
}
}
7.3. Elemente grafice de control (WIDGETS)
7.3.1. Butoane
Butoanele sunt elemente de control care, prin apăsare, pot genera o acțiune. Asocierea unei acțiuni
cu un buton se va preda ulterior acestui laborator.
Butoanele derivă din clasa JButton. In costructor primesc textul afișat pe buton. Prin procedura
setMnemonic se pot asocia taste de apelare rapidă (shortcut).
Pentru a adăuga un cuvânt de comandă asociat butonului (cuvant ce va fi testat pentru efectuarea
acțiunii asociate) se foloseste metoda addActionCommand().
7.3.2 CheckBox-uri
Butoanele de marcaj sau check box urile sunt elemente de control care rețin o anumită stare. In plus
față de butoanele simple, pentru ele se pot apela metodele setSelected () pentru a stabili marcajul
prin program, respectiv getSelected() pentru a afla starea marcajului.
7.3.3 RadioButton
Butoanele radio sunt elemente de control care rețin o anumita stare, la fel cu cele de marcaj.
Deosebirea principală constă în faptul că toate butoanele radio incluse în acelasi grup logic sunt
mutual exclusive. Pentru gestionarea grupurilor de butoane radio se va folosi clasa ButtonGroup,
respectiv metoda 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.
// Creare 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”);
…
// Grupare radio-buttons.
ButtonGroup group = new ButtonGroup();
group.add(birdButton);
group.add(catButton);
…
// Aranjarea pe coloana intr-un Panel
JPanel radioPanel = new JPanel();
radioPanel.setLayout(new GridLayout(0, 1));
radioPanel.add(birdButton);
radioPanel.add(catButton);
Sarcina 2: Rulati programul următor având grijă ca scrierea clasei Widgets să se facă într-un fișier
separat din același package:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
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);
}
}
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);
}
}
public ButoaneRadio() {
// Creare radio butoane
JRadioButton 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);
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);
}
}
7.3.4. ListBox-uri
ListBox-urile afișează liste de opțiuni. Ele se compun dintr-un element care se ocupă de vizualizare
(derivat din clasa JList), respectiv dintr-un element care se ocupă cu gestionarea conținutului (derivat
din ListModel).
Interfața ListModel pune la dispoziție o metodă addElement() care permite adăugarea unei noi
opțiuni în listă.
Constructorul clasei JList primește un obiect de tip ListModel pe care îl va afișa pe ecran. Pentru a
avea la dispozitie bare de derulare asociate listei, aceasta va trebui inclusă într-un element de tip
JScrollPane (un panou derulant).
Adițional listelor simple se pot defini și liste cu derulare (de tip ComboBox). Acestea afisează în mod
obișnuit o singură opțiune din listă iar pentru a accesa restul opținulor lista trebuie derulată de la un
buton special. Listele derulante nu trebuie adăugate într-un JScrollPane
Sarcina 3: Rulați programul următor având grijă să puneti în fișier separat clasa Liste:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
Sarcina 4 : Realizați o interfață care să conțină toate elementele grafice prezentate mai sus