Sunteți pe pagina 1din 51

Programarea Java

LECIA NR. 3
Iniierea n programarea vizual

Petic Mircea
petic.mircea@yahoo.com
www.facebook.com/mircea.petic

Prima fereastr
O fereastr este un obiect al clasei JFrame.
Clasa JFrame este reinut n pachetul
javax.swing.

Exemplu 1.
import javax.swing.*;
public class pv {
public static void main(String args[]){
JFrame fer=new JFrame(Prima fereastra!);
fer.setSize(200,300);
fer.setLocation(300,400);
fer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

fer.setVisible(true);
}
}

Metodele utilizate
JFrame() constructor.
void setSize(int width, int height)
stabilete lungimea i limea ferestrei.
void setLocation(int x, int y)
stabilete poziia unde va fi afiat colul din stnga
sus al ferestrei, n raport cu colul din stnga sus al
ecranului.
void setResizable(boolean ac) dac
parametrul este false nu se pot modifica
dimensiunile ferestrei.

Metodele utilizate
void setDefaultCloseOperation(int a)
stabilete ce se ntmpl atunci cnd se nchide
fereastra.

setVisible(boolean x) stabilete dac


fereastra este vizibil (apare pe ecran) sau nu
(dei exist, nu este afiat).

Exemplu 2. Clasa utilizator Fereastra


import javax.swing.*;
class Fereastra extends JFrame {
Fereastra (String Nume, int lat, int inalt, int dreapta, int stinga)
{
super(Nume);
setSize(lat, inalt);
setLocation(dreapta, stinga);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
public class pv{
public static void main(String args[]){
Fereastra f=new Fereastra(Prima, 100,200,25,100);
}
}

Ataarea componentelor ferestrei


Structura care reine referinele ctre
obiectele care se afl pe fereast este un
obiect al clasei Container.
Un obiect de tip JFrame sau dintr-o subclas
a lui JFrame conine datele membru i
metodele clasei Container.
Accesul la containerul unei ferestre se face
utiliznd o metod a clasei JFrame:
Container getContentPane();

Pornind de la referinta getContentPane


se pot realiza dou lucruri:
Pot fi adugate ferestrei componentele dorite.
Pentru aceasta se folosete metoda add() a clasei
Container:
Component add(Component comp) adaug o component
a ferestrei.
Toate componentele snt derivate din clasa Component.

Pot fi aranjate n fereastr componentele


adugate.
Mecanismul din Java presupune existena
gestionarilor de poziionare.
Pentru a ataa unui container un gestionar de poziionare,
se utilizeaz metoda clasei Container numit
setLayout():
void setLayout(LayoutManager gest) ataeaz
unui container un gestionar de poziionare.

Exemplu: O fereastr cu dou butoane.


Apsarea butoanelor nu are nici un efect.
import java.awt.*;
import javax.swing.*;
class Fer extend JFrame {
public Fer (String titlu) {
super(titlu);
setSize(200,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container x=getContentPane();
x.setLayout(new FlowLayout() );
JButton A=new Jbutton(Buton 1); x.add(A);
JButton B=new JButton(Button 2); x.add(B);
setVisible(true);
}
}
public class pv{
public static void main(String args[]){
Fer fp=new Fer(Doua butoane);
}
}

Interfata ActionListener
Interfaa ActionListener asculttorul de
evenimente.
Un eveniment de tip ActionListener este
apsarea unui buton.
Interfaa conine antetul unei singure metode:
actionPerformed (ActionEvent e)

Pentru ca o component s poat rspunde la


un eveniment de tipul ActionEvent, trebuie
s implementeze clasa ActionListener.

Implementarea clasei ActionListener


Clasa care include componenta (fereastra) s
conin clauza
implements ActionListener;
S fie implementat metoda
actionPerformed()
Aceast metod se va executa automat atunci
cnd este apsat butonul. Prin urmare,
implementarea ei va scrie codul necesar
aciunii dorite.

Clasa ActionEvent
ActionEvent este clasa care conine
metoda:
String getActionCommand() returneaz
irul de caractere asociat componentei care a
transmis evenimentul. Metoda poate fi utilizat
pentru a depista componenta care a transmis
evenimentul.

Exemplu: Cnd se apas un buton, n fereastr


va aprea irul reinut de butonul apsat.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Fereastra extends JFrame implements ActionListener{
Fereastra (String Nume)
{
super(Nume); setSize(200,100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container x=getContentPane();
x.setLayout(new FlowLayout() );
JButton A=new JButton("Buton 1"); x.add(A);
JButton B=new JButton("Buton 2"); x.add(B);
A.addActionListener(this); .addActionListener(this);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent ae) {
if (ae.getActionCommand().compareTo("Button 1")==0)
else
}
}
public class testfer{
public static void main(String[] args) {
Fereastra fp=new Fereastra("Doua butoane");
}
}

System.out.println("Ai apasat Buton 1");


System.out.println("Ai apasat Buton 2");

Clasa JComponent

Prin component se nelege un obiect care are o


reprezentare grafic.
Exemple de componente: butoane, liste, edit-uri,
etichete...
Fiecare tip de component rezult n urma
instanierea unei clase specifice ei.
De exemplu, un buton rezult n urma instanierii
clasei JButton.
Clasele tuturor componentelor enumerate snt
subclase ale clasei JComponent.
Putem folosi metodele clasei JComponent pentru
orice alt component concret.

Metodele clasei JComponent


void setBackground(Color c)
metoda stabilete culoarea de fond a
componentei.

void setForeground(Color c) seteaz


culoarea caracterelor.
Constante de culoare: black, red, white, yellor, etc.
Funcioneaz i sistemul RGB

Metodele clasei JComponent


setFont(Font f) seteaz fontul cu care se
scrie, stilul su i mrimea. Parametrul este un
obiect al clasei Font.
Clasa Font are constructorul:
Font(String nume, int stil, int marime)
unde:
nume este numele fontului
stil stilul, cu valorile uzuale Font.ITALIC, Font.BOLD,
Font.PLAIN, se pot i sume: Font.ITALIC+Font.BOLD
Marime marimea fontului

Exemplu:
JButton A=new JButton(Apasa);
A.setBackground(Color.red);
A.setFont(new Font(Arial,
Font.ITALIC, 20));
A.setForeground(Color.GREEN);

Metodele clasei JComponent.


void setToolTipText(String text);
- metoda seteaz irul de caractere care va fi
afiat atunci cnd cursorul mouse-ului
staioneaz asupra componentei.
void setEnable(boolean v) face o
component s fie activat sau nu.
void setVisible(boolean v) dac
parametrul reine true, componenta este
vizibil, altfel ea este invizibil.

Clasa Toolkit
Clasa ToolKit este acea clas care permite ca
programele scrise n Java s ruleze
independent de rezoluia calculatorului.
Metodele clasei ToolKit:
public static Toolkit getDefaultToolkit()

returneaz un obiect Toolkit (conine date despre


setrile curente);
Dimension getScreenSize() returneaz o
referin ctre un obiect de tip Dimension care
conine lungimea (width) i nlimea (height) n
pixeli a ecranului.

Exemplu: programul care creeaz o


fereastr, care iniial ocup ntreg ecranul.
import java.awt.*;
import javax.swing.*;
class Fer extends Jframe {
public Fer(String titlu){
super(titlu);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Toolkit ec=Toolkit.getDefaultToolkit();
Dimension dim=ec.getScreenSize();
int i=dim.height; int l=dim.width;
setSize(dim.width, dim.height); setVisible(true);
}
}
public class pv{
public static void main(String args[]) {
Fer fp=new Fer(Fereastra pe intreg ecran);
}
}

Poziionarea componentelor
Pentru aezarea componentelor n poziia
dorit, putem s utilizm poziionarea
absolut sau unul dintre gestionarii de
poziionare existeni:
FlowLayout
GridLayout
BorderLayout
GridBagLayout
CardLayout

Poziionarea absolut
Coordonatele snt date n pixeli.
Absena gestionarului se stabilete astfel:
Container x=getContentPane();
x.setLayout(null);

Componentele trebuie dimensionate i


poziionate cu urmtoarele metode:
setBounds(int x, int y, int lat, int inal)

(x,y) coltul stnga sus, lat i inal snt laimea i


nlimea.
setLocation(int x, int y)
setSize(int lat, int lung)

Gestionarul de poziionare FlowLayout


Componentele snt afiate pe linii, n ordinea n
care au fost declarate (de la stnga la dreapta).
Constructorii clasei FlowLayout:
FlowLayout() distana ntre rnduri i componente
5 uniti, alinierea CENTER.
FlowLayout(int aliniere)
FlowLayout(int aliniere, int dist_oriz,
int dist_vert)

setPrefferedSize(Dimension dim) se
specific limea i nalimea componentei.

Gestionarul de poziionare GridLayout


mparte suprafaa ferestrei n mai multe dreptunghiuri de
suprafa egal i n fiecare dreptunghi astfel obinut se
aeaz o component care este de cele mai multe ori extins
ca suprafa, astfel nct s ocupe ntreaga suprafa a
dreptunghiului care i revine.

Constructorii:
GridLayout()
GridLayout(int nrlinii, int nrcoloane)
GridLayout(int nrlinii, int nrcoloane,
int sp_o, int sp_v)

Gestionarul de poziionare
BorderLayout
Clasa BorderLayout mparte suprafaa n 5
pri, n care se poate de aezat cte o
component.
Metoda add() are 2 parametri: componenta
i partea n care se aeaz.
x.setLayout(new BorderLayout());
x.add(A,BorderLayout.SOUTH);

Gestionarul GridBagLayout
Este o extindere a gestionarului GridLayout().
Proporiile ntre linii i coloane pot fi diferite,
iar componenta poate ocupa unul sau mai
multe dreptunghiuri.

Gestionarul CardLayout
Acest gestionar se caracterizeaz prin faptul c, la
un moment dat, afieaz o singur component.
Metodele:
CardLayout() constructor
next(Container parinte) afieaz urmtoarea
component.
last(Container parinte) se afieaz ultima
component
first(Container parinte) se afieaz prima
component.
addLayout(String nume, Component c) se adaug o
component creia i se i atribuie un nume.

Componente de tip JButton


Cu ajutorul de acest tip se creeaz butoane.
Constructorii:
JButton() buton fr text i fr imagine.
JButton(String text) creeaz un buton cu un text.
JButton(Icon icon) buton cu imagine de mici
dimensiuni.
JButton(String text, Icon icon) buton cu imagine de
mici dimensiuni.

Exemplu:
Icon icon=new ImageIcon(om.gif);
JButtonA=new JButton(icon);

Metode pentru JButton


setVerticalTextPosition(constanta)
seteaz poziia pe vertical a textului n raport cu
imaginea: deasupra(JButton.TOP),
dedesubt(JButton.BOTTOM), n centru
(JButton.CENTER).
setHorizontalTextPosition(constanta)
seteaz poziia pe orizontal a textului n raport
cu imaginea: stnga(JButton.LEFT),
dreapta(JButton.RIGHT), n centru
(JButton.CENTER).

Exemplu cu JButton
import java.awt.*;
import javax.swing.*;
class Fereastra extends JFrame{
Fereastra (String Nume)
{
super(Nume); setSize(200,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container x=getContentPane();
x.setLayout(new FlowLayout() );
Icon icon = new ImageIcon("image.gif");
JButton A=new JButton("Java", icon);
A.setVerticalTextPosition(JButton.TOP);
A.setHorizontalTextPosition(JButton.CENTER);
x.add(A);
setVisible(true);
}
}

Componentede tip JLabel


Component pentru a afia text i imagini, cu
rol lmuritor.
JLabel(String s) afiarea unui ir de
caractere.
JLabel(Icon icon) pentru afia o imagine.
JLabel(String text, Icon icon, int
horizontalAlignment) text + imagine +
aliniere.
setVerticalTextPosition/setHorizontalTextPosition(c)

Exemplu JLabel
import java.awt.*;
import javax.swing.*;
class Fereastra extends JFrame{
Fereastra (String Nume)
{
super(Nume); setSize(200,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container x=getContentPane();
x.setLayout(new FlowLayout() );
Icon icon = new ImageIcon("image.gif");
JLabel A=new JLabel("Java", icon,JLabel.CENTER);
A.setVerticalTextPosition(JLabel.TOP);
A.setHorizontalTextPosition(JLabel.CENTER);
x.add(A);
setVisible(true);
}
}

Componente de tip JPanel (cv.java)


Componentele JPanel (paneluri) snt de tip
container, adic au rolul de a conine pe suprafaa
lor alte componente.
JPanel() constructor, obiectul rezultat are
gestionarul de poziionare FlowLayout().
JPanel(LayoutManager layout) constructor,
obiectul rezultat are gestionarul de poziionare
transmis ca parametru.
setLayout(LayoutManager layout) seteaz
gestionarul de poziionare.
add(Component c) adaug o component
obiectului.

Componente de tip JTextField


Componentele de acest fel snt utilizate
pentru ca utilizatorul s introduc sau s
afieze iruri de caractere de la tastatur, iruri
pe care programul urmeaz s le prelucreze.
JTextField(int nr) creaz un edit vid, dar care
are o lime suficient pentru a vizualiza
simultan nrde caractere.
JTextField(String s) creaz un edit care iniial
afieaz un ir de caractere.

Metode JTextField (pv.java)


JTextField(String s, int nr) creaz un edit
care iniial afieaz un ir de caractere i care
are o lime suficient pentru a afia simultan
un numr de nrcaractere.
String getText() returneaz irul de caractere
reinut de edit la un moment dat.
void setText(String s) are rolul de a
determina ca editul s conin irul de
caractere specificat.

Componente de tip JComboBox


Obiectele clasei JComboBox snt aa numitele
liste, din care utilizatorul poate selecta o
anumit opiune unic.
JComboBox() constructor
void AddItem(Object s) adaug listei o
opiune.
Object getSelectedItem() returneaz irul de
caractere corespunztor opiunii selectate.

Metode JComboBox (cp.java)


int getItemCount() returneaz numrul de
opiuni.
int getSelectedIndex() returneaz indexul
opiunii selectate.
Object getItemAt(int ind) returneaz
obiectul reinut de item-ul de indice ind.

Componente de tip JCheckBox


Obiectele clasei JCheckBox snt aa numitele
butoane de validare. Fereastra poate conine unul
sau mai multe butoane de validare.
JCheckBox(String s) creeaz un buton de
validare care conine irul de caractere transmis
ca parametru.
JCheckBox(String s, boolean v) creeaz un
buton de validare care conine irul de caractere
transmis ca parametru i care este marcat sau nu.

Metode JCheckBox (pv1.java)


JCheckBox(String s, Icon f) creeaz un buton
de validare care conine irul de caractere
transmis ca parametru i o imagine.
boolean isSelected() returneaz true dac
butonul a fost selectat i false n caz contrar.
String getText() returneaz irul de caractere
reinut de buton.

Componente de tip JRadioButton


Obiectele de tip JRadioButton snt
asemntoare cu cele de tip JCheckBox,
negrupate au acelai comportament, numai c
arat ca nite butoane radio.
Butoanele pot fi grupate, adic pot fi tratate
ca un ntreg.
Pentru a grupa butoanele se folosete un
obiect al clasei ButtonGroup.

Metode JRadioButton (pv2.java)


ButtonGroup() constructor;
void add(AbstractButton b) adaug un buton
grupului (clasa AbstractButton este superclas
pentru Jbutton, JRadioButton, JCheckBox).
Enumeration getElements(); -returneaz
pointer la grupul de butoane.
int getButtonCount() returneaz numrul de
butoane din group.

Meniuri
n Java meniurile se construiesc prin utilizarea
obiectelor mai multor clase:
Clasa JMenuBar obiectele acestei clase se utilizeaz
pentru a obine meniuri clasice, aflate n partea de sus
a ferestrei.
Clasa JMenu obiectele acestei clase au rolul de a
nscrie n meniu anumite opiuni, care la rndul lor pot
conine opiuni.
Clasa JMenuItem o astfel de component care apare
n meniu, arat ca o opiune i are rolul unui buton,
adic selectat, conduce la o anumit aciune.

Meniuri 2 (pv3.java)
Meniurile pot conine i submeniuri.
Unei componente de tip JMenu i se adaug,
pe lng alte componente de tip JMenuItem, o
alt component, tot de tip JMenu.
Acesteia din urm i se adaug componente de
tip JMenuItem.

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