Documente Academic
Documente Profesional
Documente Cultură
1
Componenta = orice obiect care are o reprezentare grafica ce poate fi afisata pe ecran si care poate interactiona cu
utilizatorul.
2
Suprafata pe care se aseaza obiectele grafice se numeste suprafata de afisare sau container si
reprezinta o instanta a unei clase obtinuta prin extensia superclasei Container. O parte din ierarhia a
carei radacina este Container este prezentata n figura de mai jos:
Container Este o component care conine alte componente i alte containere. Sunt
folosite pentru a construi ierarhii grafice pentru interfaa utilizator.
Applet Este un panel specializat folosit pentru programe ce se execut ntr-un web
browser
Window Este un container ce reprezint o fereastr top level ce nu are titlu, meniu,
margini.
Frame Este o fereastr care poate fi (opional) mutat sau redimensionat, are bar de
titlu, un icon, meniuri
3
import java.awt.*;
public class AFrame {
public static void main (String args[] ){
F f = new F("Exemplul 1");
f.setSize(300,100);
f.setVisible(true);
}
}
class F extends Frame{
F(String s) {
setTitle(s);
}
}
Clasa Container pune la dispozitie metoda add pentru adaugarea unei componente
pe o suprafata de afisare. O componenta nu poate apartine dect unui singur
container, ceea ce nseamna ca pentru a muta un obiect dintr-un container n altul
trebuie sa-l eliminam mai nti de pe containerul initial. Eliminarea unei componente
de pe un container se face cu metoda remove.
Frame f = new Frame("O fereastra");
Button b = new Button("OK");
f.add(b); //adauga butonul pe suprafata ferestrei
4
Un gestionar de pozitionare (layout manager) este un obiect care controleaza
dimensiunea si aranjarea (pozitia) componentelor unui container
Cei mai utilizati gestionari de pozitionare din pachetul java.awt sunt:
FlowLayout
BorderLayout
GridLayout
CardLayout
GridBagLayout
sau:
container.setLayout(new FlowLayout());
5
1. Gestionarul de poziionare FlowLayout
Constructori:
FlowLayout()
FlowLayout(int aliniere) aliniere n rnd (implicit centrat)
FlowLayout(int aliniere, int gapOrizontal, int gapVertical) spaiu ntre
componente (implicit 5 pixeli pe ambele direcii)
//Exemplu
import java.awt.*;
public class TestLayout {
public static void main(String args[]) {
Frame f = new Frame("Flow Layout");
f.setLayout(new FlowLayout());
Button b1 = new Button("Button 1");
Button b2 = new Button("2");
Button b3 = new Button("Button 3");
Button b4 = new Button("Long-Named Button 4");
Button b5 = new Button("Button 5");
f.add(b1); f.add(b2); f.add(b3); f.add(b4); f.add(b5);
f.pack();
f.show();
}
}
6
Componentele ferestrei vor fi afisate astfel:
7
2. Gestionarul de poziionare BorderLayout
BorderLayout()
BorderLayout(int gapOrizontal, gapVertical) gap implicit zero
Component add(Component c)
void add(Component c, Object constrangeri)
//Exemplu
import java.awt.*;
public class TestBorderLayout {
public static void main(String args[]) {
Frame f = new Frame("Border Layout");
f.setLayout(new BorderLayout());//poate sa lipseasca
8
f.add(new Button("Vest"), BorderLayout.WEST);
f.add(new Button("Centru"), BorderLayout.CENTER);
f.pack();
f.show();
}
}
Cele cinci butoane ale ferestrei vor fi afisate astfel:
9
//Exemplu
import java.awt.*;
public class TestGridLayout {
public static void main(String args[]) {
Frame f = new Frame("Grid Layout");
f.setLayout(new GridLayout(3, 2));
Cele sase butoane ale ferestrei vor fi pe trei rnduri si doua coloane astfel:
10
void show(Container parent, String name)
12
import java.awt.*;
public class AButon{
public static void main (String args[] ){
F f = new F("Exemplul 1");
f.setSize(500,300);
f.setVisible(true);
}
}
class F extends Frame{
F(String s) {
setTitle(s);
setLayout(new GridLayout(2,2));
Panel border=new Panel();
border.setLayout(new BorderLayout());
border.add("North",new Button("Nord"));
border.add("South",new Button("Sud"));
border.add("East",new Button("Est"));
border.add("West",new Button("Vest"));
add(border);
Panel flow=new Panel();
flow.setLayout(new FlowLayout());
flow.add(new Button("Buton 1"));
flow.add(new Button("Buton 2"));
flow.add(new Button("Buton 3"));
flow.add(new Button("Buton 4"));
add(flow);
Panel grid=new Panel();
grid.setLayout(new GridLayout(2,2));
grid.add(new Button("Buton 1"));
grid.add(new Button("Buton 2"));
grid.add(new Button("Buton 3"));
grid.add(new Button("Buton 4"));
add(grid);
add(new Button("Buton"));
}
}
13
Rezultatul rulrii este:
14
SCHEMA GENERAL DE LUCRU CU AWT
Container
Window
Frame
Dialog
ScrollPane
Panel
Applet
Componente elementare
Evenimente
Un eveniment este produs de o actiune a utilizatorului asupra unei componente grafice
si reprezinta mecanismul prin care utilizatorul comunica efectiv cu programul.
16
n lucrul cu interfee grafice, o aciune asupra unei componente grafice
declaneaz un eveniment. Un eveniment este un obiect al unei clase
tipEvent din urmtoarea ierarhie de clase:
17
Interfee i clase abstracte asociate evenimentelor
18
Fonturi
constructorul:
Font (String nume, int stil, int dim)
- nume este numele fontului;
- stil este stilul ales pentru font;
- dim este mrimea fontului.
Modul tipic de alegere a unui font este invocarea metodei setFont a
clasei Component:
public void setFont(Font f)
prin:
setFont(new Font(nume,stil,dim));
Culori
- culori pentru fundal i editare de texte sunt cuprinse n clasa Color din
pachetul java.awt:
public class Color extends Object
constante publice de lip Color:
white,lighGray,gray,darkGray,black,red,pink,orang,
yellow,green, magenta,cyan i blue
i metode:
public Color brighter()
public Color darker()
19
care creeaz o culoare mai deschis, respectiv mai nchis, dect cea care a
invocat metoda.
Clasa Component
void addContainerListener(ContainerListener c)
asociaz containerului gestionarul poziionare g;
void removeContainerListener(ContainerListener c)
20
obiectul c nceteaz de a mai fi gestionar de evenimente pentru container.
Clasa Frame
Clasa Frame - n pachetul java.awt:
public class Frame extends Window
constructorii:
Frame()
Frame(String titlu)
i metoda:
void setTitle(String titlu).
Clasa Panel
Clasa Panel din pachetul java.awt:
public class Panel extends Container
prevede constructorii:
Panel()
Panel(LayoutManager lm)
unde al doilea constructor asociaz panoului un gestionar de poziionare.
void addActionListener(ActionListener 1)
void removeActionListener(ActionListener l)
24
void append(String str) - adaug textul str ariei de text;
void replaceRange(String str,int p,int u) -nlocuiete textul dintre
poziiile p i u cu texlul str.
Clasa:
public class CheckboxGroup extends Object
ofer faciliti pentru gruparea mai multor csue de opiuni, ntr-un astfel
de grup, la orice moment de timp exact o csu este n starea "selectat".
Apsarea unei csue face ca ea s devin unic n starea "selectat".
Prezentm doar un constructor al clasei:
public CheckboxGroup()
25
Crearea i adugarea unei csue de opiuni la un grup se realizeaz
folosind urmtorul constructor al clasei checkBox:
public Checkbox(String et,CheckboxGroup grup,boolean stare)
26
In urmatorul exemplu s-a construit un cadru format din doua panouri:primul cuprinde 3 casute
de optiuni independente, iar al doilea cuprinde un grup de alte 3 casute de optiuni.
import java.awt.*;
public class ACheckbox {
public static void main (String args[] ){
F f = new F("Exemplul 1");
f.setSize(300,100);
f.setVisible(true);
}
}
class F extends Frame{
Checkbox checkbox[]=new Checkbox[6];
F(String s){
setTitle(s);
setLayout(new FlowLayout());
Panel panel1=new Panel();
Panel panel2=new Panel();
panel1.setLayout(new GridLayout(3,1));
panel2.setLayout(new GridLayout(3,1));
checkbox[0]=new Checkbox("unu");
checkbox[1]=new Checkbox("doi");
checkbox[2]=new Checkbox("trei");
CheckboxGroup group=new CheckboxGroup();
checkbox[3]=new Checkbox("four",group,false);
checkbox[4]=new Checkbox("five",group,false);
checkbox[5]=new Checkbox("six",group,false);
for (int i=0;i<3;i++) panel1.add(checkbox[i]);
for (int i=3;i<6;i++) panel2.add(checkbox[i]);
add(panel1);
add(panel2);
}
}
27
Liste de opiuni cu alegere multipl. Clasa List
O list de opiuni cu alegere multipl permite selectarea a oricte
elemente (tot iruri de caractere, ca i n cazul listelor cu alegere unic) din
list. Selectarea /deselectarea se face n mod standard prin clic cu mouse-ul
pe elementul respectiv.
Clasa List este declarat prin:
public class List extends Component
constructor:
public List(int linii, boolean b)
-unde linii reprezint numrul iniial de elemente (linii) din list. La
invocare vom folosi totdeauna true pentru al doilea argument.
import java.awt.*;
public class AList {
public static void main (String args[] ){
F f = new F("Exemplul 1");
f.setSize(300,150);
f.setVisible(true);
}
}
class F extends Frame{
F(String s) {
setTitle(s);
setLayout(new FlowLayout());
Choice choice=new Choice();
List list=new List(3,true);
try {
choice.addItem("Unu");
choice.addItem("Doi");
choice.addItem("Trei");
choice.addItem("Patru");
} catch (NullPointerException ex) {}
add(choice);
list.addItem("Unu");
list.addItem("Doi");
list.addItem("Trei");
list.addItem("Patru");
add(list);
}
}
Executarea lui face ca pe ecran sa apara:
29
Bare de defilare. Clasa scrollbar
Metode:
public int getValue() -ntoarce valoarea curent a barei de defilare;
public void setValue(int val)-seteaz valoarea selectat a barei de
defilare. Dac val<p, atunci val devine valoarea curent a lui p; analog,
daca val>u, atunci val devine valoarea curent a lui u.
30
Acionrile asupra unei bare de defilare declaneaz un eveniment de
tipul Adjustment. Gestionarul de evenimente corespunztor trebuie s
implementeze, respectiv extind, metoda adjustmentValueChanged fr
parametri a clasei AdjustmentListener.
Clasa FileDialog
import java.awt.*;
import java.awt.event.*;
public class AFdialog {
public static void main (String args[] ){
F f = new F("Exemplul 1");
f.setSize(500,400);
f.setVisible(true);
}
}
class F extends Frame implements ActionListener{
FileDialog fdialog;
F(String s) {
setTitle(s);
MenuBar menubar=new MenuBar();
Menu file=new Menu("File");
Menu dialog=new Menu("Dialog");
MenuItem exit=new MenuItem("Exit");
MenuItem sh=new MenuItem("Show");
MenuItem hi=new MenuItem("Hide");
file.add("New");
file.add("Open");
32
file.add("Save");
file.add(exit);
dialog.add(sh);
dialog .add(hi);
menubar.add(file);
menubar.add(dialog);
setMenuBar(menubar);
exit.addActionListener(this);
sh.addActionListener(this);
hi.addActionListener(this);
fdialog=new FileDialog(this,"File Dialog Box");
}
public void actionPerformed(ActionEvent e){
if (e.getSource() instanceof MenuItem){
if (e.getActionCommand().equals("Exit")){
System.exit(0);}
if (e.getActionCommand().equals("Show")){
fdialog.show();}
}
}
}
In exemplul de mai sus am folosit i un meniu;in continuare vom vorbi despre meniuri.
33
Folosirea meniurilor
Clasa MenuComponent
Este o clasa abstracta, din care sunt extinse toate celelalte clase
folosite pentru lucrul cu meniuri.
Clasa MenuComponent contine metode de ordin general, dintre care:
getName, setName, getFont, setFont.
Clasa MenuBar
34
platforma curenta de lucru. Pentru a lega bara de meniuri la o anumita
fereastra trebuie apelata metoda setMenuBar din clasa Frame.
Clasa MenuItem
import java.awt.*;
import java.awt.event.*;
public class AMenu {
public static void main (String args[] ){
F f = new F("Exemplul 1");
f.setSize(300,300);
f.setVisible(true);
}
}
35
file.add("Open");
file.add("Save");
file.add(exit);
edit.add("Copy");
edit.add("Cut");
edit.add("Paste");
view.add("Zoom");
menubar.add(file);
menubar.add(edit);
menubar.add(view);
setMenuBar(menubar);
exit.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if (e.getSource() instanceof MenuItem){
if (e.getActionCommand().equals("Exit")){
System.exit(0);}
}
}
}
38