Sunteți pe pagina 1din 3

Java 1 Modul 8

8.1 Crearea ferestrelor cu SWING - JFrame


Clasa JFrame este cea pe care o vom folosi pentru a crea ferestre; Ca orice alta clasa care reprezinta componente swing ea se afla in
pachetuljavax.swing; Pentru ca este un container vom folosi de cele mai multe ori aceasta clasa prin mostenire nu prin instantiere; Altfel
spus, vom crea clase care sa reprezinta ferestre si pentru ca acestea sa devina ferestre de tip JFrame ele vor mosteni aceasta clasa;
public class Fereastra extends JFrame{}
Daca incercam in acest moment sa folosim clasa fereastra prin instantiere cu construcotrul default acea instanta creata ar reprezenta o
fereastra; Pentru a modifica aceasta fereastra adaugandu-i componente pe interfata vom folosi un constructor;
public Fereastra(String titlu){super(titlu);}
De obicei acest contructor primeste prin parametru titlul ferestrei si il seteaza prin intermediul constructorului clasei: JFrame(String
titlu);
Toate componentele vor reprezenta pentru aceasta ferestra atribute si vor fi definite corespunzator inainte de constructor; De obicei
componentele de pe o ferestra sunt definite private pentru ca ele au un scop numai in interiorul clasei si nu sunt accesate din exterior;
JFrame definieste un container prin urmare se pot atasa manageri de pozitionare unei ferestre pentru a aranja interfata acesteia; Sunt
folositi aceeasi LayoutManagers din java.awt si de asemenea se seteaza folosind metoda setLayout();
Default o fereastra JFrame are setat managerul BorderLayout cu constanta CENTER; De asemenea aceasta este invizibila si trebuie
facuta vizibila dupa instantiere folosind metoda setVisible(boolean state); Daca parametrul este false atunci ea este facuta invizibila, daca
parametrul este true atunci fereastra devine vizibila;
Alte metode prin intermediul careia putem modifica atribute ale ferestrei JFrame:

setSize(int w, int h)

setLocation(int x, int y)

setBounds(int x, int y,int h,int w)

setResizable(boolean state)

setIconImage(Image i)

Metoda add(Component c) este folosita pentru a adauga pe fereastra o componenta exact ca in cazul Appleturilor; Metoda add() este
mostenita din clasa Container;

8.2 Crearea butoanelor - JButton


Un buton poate fi creat folosind clasa JButton; De obicei butonul este contruit folosind unul dintre constructorii:

public JButton(); // un buton fara text

public JButton(String text) // un buton cu text dat ca parametru la construire

public JButton(String text, Icon ico) // buton cu text si imagine

Textul de pe buton poate fi modificat folosind metoda setText(String text) sau poate fi preluat folosind metoda getText(); Metodele
setLabel() si getLabel() sunt considerate obsolete si nu se mai folosesc in prezent;
Din moment ce butonul reprezinta o componenta, poate fi adaugat pe un container folosind metoda add(Component c) a containerului;
Butonul JButton este sensibil la evenimente de tip ActionEvent, asadar modalitatea de atasare a ascultatorilor si de creare evenimente
este similara butoanelor Button din pachetul java.awt;

8.3 Crearea componentelor text


Vom folosi trei tipuri de componete text: JTextField, JTextArea si JPasswordField;
Componenta JTextFiled este un camp de text cu un singur rand pe care pot incapea mai multe caractere; In general aceasta
componenta este folosita pentru a introduce un text de dimensiuni mici;
Componenta JTextArea este un camp de text care permite introducerea unui text pe mai multe randuri, deci aceasta componenta este
folosita pentru texte de dimensiuni mai mari;
Metoda folosita pentru preluarea textului dintr-o componenta text este: getText() care returneaza o instanta de String;
Pentru a modifica textul dintr-un camp de text se foloseste metoda setText(String text)
Componenta JTextArea are in comportament si metoda append(String text) care permite adaugarea unui text la componenta;
Componenta JPasswordField este similara componentei JTextField, doar ca , aceasta ascunde caracterele introduse de utilizator ca in
cazul unui camp pentru introducerea parolei obisnuit;

8.4 Butoane de selectie


Clasele JCheckBox si JRadioButton definesc componente de tip butoane de selectie; Standard, butoanele JCheckBox sunt folosite
pentru a crea liste de optiuni de tip multiple-choice (din care poti selecta mai multe variante), iar JRadioButton pentru crearea de liste de
tip single-choice (din care se poate selecta o singura optiune);

Astfel pentru butoanele JRadioButton adaugam o noua clasa ButtonGroup cu ajutorul careia precizam care sunt butoanele din care se
selecteaza o singura optiune; ButtonGroup defineste un grup de butoane; Din butoanele ce apartin aceluiasi grup nu putem selecta decat o
singura optiune;
Ambele tipuri de componente se creaza similar butoanelor JButton; In general acestea nu sunt folosite cu evenimente si prin verificari
ale starilor acestora (se verifica daca este sau nu select la un anumit eveniment); Verificarea starii unei astfel de componente se face
folosind medoda isSelected() care returneaza true daca butonul este bifat si false daca nu este bifat;
Un grup de butoane se creaza astfel:
ButtonGroup bg = new ButtonGroup();
Un buton poate fi adaugat la grupul de butoane bg (instanta creata mai devreme) folosind metoda add(Component c);
Daca este cazul se poate folosi un eveniment de modificare a starii unui buton care este definit in pachetul javax.swing.event;
Evenimentul se atasaza similar celor din java.awt.event; folosind ascultatorul ItemListener;

8.5 Meniuri
Pentru a crea meniuri avem la dispozitie cinci clase: JMenuBar, JMenu, JMenuItem, JRadioButtonMenuItem, JCheckBoxMenuItem;
Intai trebuie creata o instanta de bara de meniu cu ajutorul clasei JMenuBar; Pe aceasta instanta vor trebui adaugate meniurile;
Instanta clasei JMenuBar este setata pe fereastra folosind metoda setJMenuBar(JMenuBar mb);
Clasa JMenu este cea care defineste un meniu ce poate fi adaugat pe bara de meniu; In general este folosit constructorul:

public JMenu(String titlu) // titlul meniului Ex: File, Edit, Insert ...etc

Meniul este adaugat pe bara de meniu folosind metoda add();


JMenuBar
mb
JMenu
m
mb.add(m); // adaugam meniul pe bara de meniu

=
=

new
new

JMenuBar();
JMenu("File");

Folosind acceasi metoda add() poate fi adaugat un meniu intr-un alt meniu creindu-se astfel submeniuri;
De asemenea se pot adauga intr-un meniu butoane (JMenuItem) folosind metoda add();
Un buton specific unui meniu se creeaza folosind unul dintre constructorii:

public JMenuItem(String text)

public JMenuItem(String text, Icon ico)

Exista de asemenea si butoane de selectie care pot fi adaugate in meniuri; Acestea pot fi create cu ajutorul clasele
JRadioButtonMenuItem si JCheckBoxMenuItem si functioneaza similar celor definite cu clasele JRadioButton si JCheckBox;

8.6 Etichete - JLabel


O eticheta reprezinta cea mai simpla componenta; Aceasta este folosita pentru afisarea unui text static in cele mai multe cazuri;
O eticheta se creaza folosind clasa JLabel:

public JLabel(String text)

si este adaugata pe un container folosind metoda add() a containerului;


Textul de pe o eticheta poate fi modificat sau preluat folosind metodele getText() si setText(String text)

8.7 Panouri - JPanel


Un panou reprezinta un container asemenea unei ferestre; Acesta este folosit prin adaugarea pe alte containere (in general ferestre
sau alte panouri);
Panoul poate fi construit folosind constuctorii:

public JPanel()

public JPanel(LayoutManger lm)

O componenta poate fi adaugata pe un panou folosindaceeasi metoda add() ca si in cazul ferestrelor, mostenita de la clasa Container;

8.8 JScrollPane
JScrollPane este o componenta folosita pentru adaugarea de bare de defilare pentru o alta compoenta care ar putea depasi
dimensiunile containerului in care este adaugata; Instanta JScrollPane nu este folosita in actiunile directe pe care le are componente pe
care o sustine; La construire instantei i se da o componenta pentru care este creata si pe care adauga bare de defilare (scrollbars); Apoi
instanta JScrollPane este adaugata pe container in locul componentei din instanta JScrollPane;
Exemplu:
JTextArea
JScrollPane
add(jsp);
ta.setText("Un text");

ta
jsp

=
=

new
new

JTextArea(4.5);
JScrollPane(ta);