Grafica in Java - Pachetul java.awt, Elemente de grafica in Java, Interfete de utilizator



Grafica in Java - Pachetul java.awt, Elemente de grafica in Java, Interfete de utilizator



Pachetul java.awt


In limbajul Java clasele utile in realizarea unor interfete de utilizator in cadrul ferestrelor din mediul Windows precum si a graficii pe ecranul monitorului sunt grupate in pachetul java.awt (Abstract Window Toolkit).



Faptul ca in java clasele de dialog sunt “inrudite” cu cele pentru desenare este o consecinta a modului actual de functionare a mediilor Windows, MacIntosh, etc. unde interfetele de utilizator au in compunerea lor numeroase elemente grafice (butoane, bare de derulare, casete de optiuni).

Pachetul java.awt este destul de vast, cuprinzand peste saizeci de clase si interfete. Intre acestea cele mai importante sunt:

java.awt.Graphics, clasa pentru grafica pe ecran;

java.awt.Color, permite implementarea culorilor;

java.awt.Font, implementarea diferitelor tipuri de caractere;

java.awt.Event, trateaza evenimentele de mouse si tastatura;

java.awt.MediaTraker, implementare animatie in applet-uri;

java.awt.AWTExceptions, trateaza exceptiile la rulare;

java.awt.AWTError, trateaza erorile.

Alaturi de clasele de uz general de mai sus exista un numar de clase particulare ce implementeaza elemente concrete (f erestre, butoane, casete de dialog, etc.). Aceste clase vor fi prezentate mai pe larg in paragraful “Interfete de utilizator”. De asemenea, in pachet sunt si o serie de biblioteci suplimentare precum:

java.awt.image, care contine clase pentru manipularea si procesarea imaginilor,

java.awt.peer, care contine clase pentru crearea interfetelor native de utilizator.

T.13.1.1. Raspundeti la urmatoarele intrebari:

1. Pachetul java.awt contine:

Clase pentru realizarea interfetelor de utilizator;

Clase pentru realizarea multiplexarii;

Clase pentru tratarea unor exceptii.

2. Grafica pe ecranul monitorului se realizeaza cu:

Clasa java.awt.Event;

Clasa java.awt.MediaTracker;

Clasa java.awt.Font.

3. In clasa java.awt.Event exista metode pentru:

Desenare figurilor geometrice;

Tratarea exceptiilor

Tratarea evenimentelor de mouse si tastatura

4. Subpachetele java.awt pentru tratarea exceptiilor sunt:

java.awt.Error;

java.io.Exceptions;

java.awt.AWTExceptions.

5. Dialogul cu utilizatorul se poate face in java prin:

Tastatura;

Mouse;

Monitor.


Elemente de grafica in Java


Grafica pe ecranul monitorului se realizeaza in limbajul Java prin metodele componente ale clasei Graphics, componenta a pachetului java.awt. Utilizarea lor are ca rezultat desenarea principalelor figuri geometrice la coordonatele si cu dimensiunile precizate prin intermediul valorilor din listele de parametrii.

Cele mai des utilizate dintre aceste metode sunt urmatoarele:

public void drawLine(int x0,int y0,int x,int y)

deseneaza o linie cu originea in punctul de coordonate (x0,y0) si capatul in punctul (x,y). Desenarea se face in culoarea curent selectata, iar coordonatele sunt relative la coltul stanga sus al applet-ului.

public void drawRect(int x,int y,int lat,int lung)

deseneaza conturul unui dreptunghi cu coltul din stanga sus in punctul de coordonate (x,y), avand dimensiunile lat si respectiv lung.

public void fillRect(int x,int y,int lat,int lung)

deseneaza un dreptunghi similar cu cel anterior, dar avand interiorul colorat in culoarea curenta.

public void clearRect(int x,int y,int lat,int lung)

sterge dreptunghiul desenat anterior prin umplerea spatiului aferent acestuia cu culoarea fondului.

public void drawRoundRect(int x,int y,int lat,int lung)

public void fillRoundRect(int x,int y,int lat,int lung)

sunt asemanatoare cu metodele drawRect() si fillRect() insa, dreptunghiurile desenate au colturi rotunjite.

public void draw3DRect(int x,int y,int lat,int lung,boolean a)

public void fill3DRect(int x, int y, int lat, int lung, boolean a)

deseneaza dreptunghiuri tridimensionale, “inaltimea” fiind data de parametrul “a” care specifica prin valoarea sa scoaterea in evidenta a obiectului (true = culoare stralucitoare, false = culoare intunecata).

public void drawOval(int x,int y,int lat,int lung)

public void fillOval(int x,int y,int lat,int lung)

prima metoda deseneaza conturul unei elipse inscrise in dreptunghiul determinat de valorile din lista de parametrii, iar cea de a doua produce o elipsa umpluta avand culoarea curenta si dimensiunile identice cu cea de mai sus.

public void drawArc(int x,int y,int lat,int lung,int u0,int u)

public void fillArc(int x,int y,int lat,int lung)

deseneaza un contur si respectiv un arc plin delimitat de dreptunghiul determinat de primele patru marimi din lista de parametrii. Parametrul u0 reprezinta unghiul de start iar u extensia unghiulara a arcului.

public drawString(String s,int x,int y)

afiseaza sirul “s” incepand cu punctul de coordonate (x,y).

public copyArrea (int x0,int y0,int lat,int lung,int x1,int y1)

copiaza obiectele din zona delimitata de (x,y,lat,lung) intr-o zona cu coordonatele (x0,y0,lat,lung).

Realizarea unor desene complexe in interiorul applet-urilor presupune construirea unor combinatii ale obiectelor simple rezultate din utilizarea metodelor de mai sus.

Utilizarea acestor functii se face prin apelarea lor ca metode ale unui obiect grafic instantiat anterior:

Graphics g;

g.fill3Drect(10,10,100,100,true);

g.drawOval(20,20,80,80);

g.drawString(“Desen”, 45, 45);

T.13.2.1. Sa se scrie liniile de cod care deseneaza intr-un applet figura de mai jos:






Setarea culorii curente de lucru se face cu metoda:

public void setColor(Color col)

unde “col” poate fi o culoare din paleta standard:

public final static Color white              //alb

public final static Color lightgray         // gri deschis

public final static Color gray                //gri

public final static Color darkgray         //gri inchis

public final static Color black   //negru

public final static Color red                  //rosu

public final static Color pink                //roz

public final static Color orange            //portocaliu

public final static Color yellow             //galben

public final static Color green //verde

public final static Color magenta         //violet

public final static Color cyan                //azuriu

public final static Color blue                //albastru

sau o nuanta definita de programator prin combinatia celor trei culori fundamentale:

Color nuanta = new Color(int rosu,int verde,int albastru);

Gama de variatie pentru cei trei intregi din lista de parametrii este 0256 deoarece fiecare culoare este codata pe cate trei octeti, cate unul pentru fiecare componenta fundamentala.

Deci, pentru a seta culoarea curenta de desenare in exemplul anterior, dupa declararea obiectului g, se scrie o linie de cod de forma:

g.setColor(Color.blue);

Alta varianta este crearea unei culori noi “culoarea_mea”:

Color.culoare = new Color(120, 40, 85)

care apoi se poate folosi ca si culoare curenta:

g.setColor(culoarea_mea);

T.13.2.2. Care este succesiunea de comenzi pentru a colora cercurile de la T.13.2.1. in culorile olimpice (rosu, albastru, verde, galben, negru)

Alegerea tipului de caractere cu care se scriu mesajele pe ecran se face cu metoda:

public void setFont (Font tip_caracter)

Tipurile de caractere disponibile sunt:

Dialog;

Helvetica;

TimesRoman;

Courier;

Symbol.

Se poate construi un stil de scriere propriu definindu-l cu metoda:

public Font (String nume,int stil,int dimensiune)

unde “nume” este numele tipului de caractere, “stil” este:

‘0’ pentru caractere normale (PLAIN);

‘1’ pentru caractere ingrosate (BOLD);

‘2’ pentru caractere italice (ITALIC);

‘3’ pentru italice ingrosate (BOLD ITALIC);

iar “dimensiune” este marimea literelor.

De exemplu pentru a scrie mesajul “Text de proba” cu caractere albastre TimesRoman de marimea 14 accentuate se scriu urmatoarele linii de cod:

Font f = new Font(TimesRoman, 2, 14);

g.setFont(f);

g.setColor(Color.blue);

g.drawString(“Text de proba”, 10, 10);

T.13.2.3. Scrieti un bloc de program care sa afiseze pe ecran propozitia “Sapte optimi din tot ce exista este ascuns!” scrisa cu caractere Dialog, bold + italic, dimensiunea 12, de culoare rosie

Elementele prezentate anterior permit afisarea in interiorul applet-urilor a unor texte si desene aducand o contributie importanta la aspectul estetic al paginilor web in care acestea exista.

T.13.2.4. Raspundeti la urmatoarele intrebari

1. Metodele din clasa Graphics permit:

Desenarea figurilor geometrice importante;

Definirea si setarea culorilor;

Scrierea unor mesaje cu tipuri de caractere variate.

2. Metoda drawRect() poate desena:

Un dreptunghi plin;

Conturul unui dreptunghi

Un dreptunghi cu colturi rotunjite

3. Conturul unui cerc se deseneaza cu metoda:

drawElipse();

drawCircle();

drawOval().

4. Clasa Color contine :

paleta de culori standard;

Metoda de definire a unei culori prin componente;

Metoda de setare a culorii curente.

5. Metoda constructor Font() permite definirea:

Tipului de caractere;

Stilului;

Dimensiunea.


Interfete de utilizator


Realizarea unor interfete de utilizator in java se face cu ajutorul unui set de clase special create pentru fiecare element de dialog in parte. Cele mai importante dintre ele sunt:

java.awt.Frame, cadru

java.awt.Panel, implementare panel;

java.awt.Container, container;

java.awt.Button, butoane;

java.awt.ScrollBar, bare de derulare;

java.awt.Menu, meniuri;

java.awt.Choice, lista derulanta;

java.awt.CheckBox, casete de optiuni;

java.awt.Label, etichete;

java.awt.List, liste de optiuni;

java.awt.TextArea, arii de text;

java.awt.TextField, campuri de text.

Prin urmare, componente interfetelor de dialog sunt obiecte ale claselor enumerate mai sus si manipularea lor este conforma cu regulile aplicabile obiectelor Java in general.

De exemplu, pentru a implementa o caseta de optiuni si un buton se scriu urmatoarele comenzi:

class O_clasa extends Applet



T.13.3.1. Urmand modelul de mai sus declarati o interfata de utilizator care sa contina:

un buton b;

un camp de text a;

eticheta e.

Actiunea comandata de actionarea unui element de dialog este introdusa in program sub forma unui obiect al clasei Event si este tratat cu metoda:

public boolean handleEvent(Event e)

a clasei Component.

De exemplu actiunile asociate apasarii butonului declarat anterior trebuie plasate in program intr-un bloc similar cu cel de mai jos

public boolean handleEvent(Event e)


default: return false;



T.13.3.2. Scrieti un bloc de program care sa produca aparitia pe ecran a unui dreptunghi roz de coordonate (10,10,30,30) la apasarea butonului b de la T.13.3.1.

Dupa cum se poate vedea in exemplul anterior, pentru fiecare din componentele, a caror manipulare comanda actiuni sau selectii, se include in program cate un bloc de decizie cuprinzand un set de comparatii cu argumentul “arg” al obiectului instantiat din clasa Event. In aceste comparatii cu “arg” intra ca prim termen:

Numele butonului (String) pentru butoane;

Starea casetei (Boolean) pentru casetele de confirmare;

Pozitia aleasa (String) pentru listele derulante;

Selectia aleasa (String) pentru listele de optiuni;

Textul scris (String) pentru TextField.

Pentru a trata o comanda a utilizatorului provenita de la tastatura se apeleaza metodele:

public boolean keyDown(Event e,int cod)

care declanseaza evenimentul “e” atunci cand tasta cu codul numeric “cod” este apasata si:

public boolean keyUp(Event e,int cod)

care actioneaza in cazul eliberarii tastei.

Controlul alinierii componentelor intr-o interfata se realizeaza utilizand clasa FlowLayout. Constructorii acestei clase:

public FlowLayout(int aliniere)

public FlowLayout(int aliniere,int spatiu_V,int spatiu_H)

permit ordonarea elementelor de dialog pastrand pe orizontala si verticala pauzele “spatiu_V” si “spatiu_H”. Parametrul “aliniere” poate fi:

public final static int CENTER (aliniere la centru);

public final static int LEFT (aliniere la stanga);

public final static int RIGHT (aliniere la dreapta).

T.13.3.3. Raspundeti la urmatoarele intrebari

1. Clasele din componenta pachetului java.awt permit:

Crearea de Ferestre;

Crearea de Containere;

Crearea de Meniuri.

2. Un element de dialog intr-o interfata de utilizator este:

variabila a clasei corespunzatoare elementului

metoda a clasei corespunzatoare elementului

Un obiect al clasei corespunzatoare elementului

3. Intr-o interfata se pot plasa:

Butoane;

Casete de optiuni;

Liste derulante;

4. Un camp de text se creeaza cu:

Label;

TextArea;

TextField.

5. Tratarea comenzilor primite de la utilizator se face prin:

Prin blocuri trycatch;

Prin metoda handleEvent();

Prin blocuri if else.


Concluzii


In limbajul Java clasele utile in realizarea unor interfete de utilizator in cadrul ferestrelor din mediul Windows, precum si a graficii pe ecranul monitorului sunt grupate in pachetul java.awt (Abstract Window Toolkit).

Grafica pe ecranul monitorului se realizeaza in limbajul Java prin metodele componente ale clasei Graphics, componenta a pachetului java.awt. Utilizarea lor are ca rezultat desenarea principalelor figuri geometrice la coordonatele si cu dimensiunile precizate prin intermediul valorilor din listele de parametrii.

Realizarea unor interfete de utilizator in Java se face cu ajutorul unui set de clase special create pentru fiecare element de dialog in parte. Actiunea comandata de manipularea unui element de dialog este introdusa in program sub forma unui obiect al clasei Event si este tratata cu metoda handleEvent() continand cate un bloc de decizie cuprinzand un set de comparatii cu argumentul “arg”.



Raspunsuri


T.13.1.1.1. a

T.13.1.1.2.

T.13.1.1.3. c

T.13.1.1.4. c

T.13.1.1.5. a, b, c

T.13.2.1.

Graphics g;

g.drawRect(0,0,100,150); g.drawOval(40,40,30,30);

g.drawOval(60,40,30,30); g.drawOval(80,40,30,30);

g.drawOval(50,60,30,30); g.drawOval(70,60,60,60);

T.13.2.2

Graphics g;

g.setColor(Color.black); g.drawRect(0,0,100,150);

g.setColor(Color.blue); g.drawOval(40,40,30,30);

g.setColor(Color.red); g.drawOval(60,40,30,30);

g.setColor(Color.green); g.drawOval(80,40,30,30);

g.setColor(Color.yellow); g.drawOval(50,60,30,30);

g.setColor(Color.black); g.drawOval(70,60,60,60);

T.13.2.3.

Font f = new Font(Dialog, 4, 14);

g.setFont(f); g.setColor(Color.red);

g.drawString Sapte optimi din tot ce exista este ascuns!”, 10, 10);

T.13.2.4.1. a, b, c

T.13.2.4.2. b

T.13.2.4.3. c

T.13.2.4.4. a, b

T.13.2.4.5. a, b, c

T.13.3.1.

class O_clasa extends Applet}

T.13.3.2.

public boolean handleEvent(Event e)}default: return false;}}

T.13.3.3.1. a, b, c

T.13.3.3.2. c

T.13.3.3.3. a, b, c

T.13.3.3.4. c

T.13.3.3.5. b