Sunteți pe pagina 1din 26

Appleturi

Programare Orientat pe Obiecte

Introducere
l

l l l

program Java de dimensiuni reduse ce gestioneaz o suprafa# de afi$are (container) care poate fi inclus ntr-o pagin Web. miniaplicatie. poate fi format din una sau mai multe clase o clas principal ce extinde clasa Applet (JApplet) - clasa ce trebuie specificat n documentul HTML ce descrie pagina Web n care dorim s includem appletul. un applet nu poate fi executat independent, va fi executat de browserul n care este nc rcat pagina Web ce con#ine appletul respectiv. ciclul de viat al unui applet: dictat de evenimentele generate de c tre browser la vizualizarea documentului HTML ce con#ine appletul.

Ierarhia claselor din care deriv appleturile


lPachetul

care ofer suport pentru crearea de appleturi este java.applet. In pachetul javax.swing exist $i clasa JApplet, care extinde Applet, oferind suport pentru crearea de appleturi pe arhitectura de componente JFC/Swing.

Crearea unui applet simplu


1. Scrierea codului sursa import java.awt.* ; import javax.swing.* ; public class FirstApplet extends JApplet { Image img; public void init() { img = getImage(getCodeBase(), image.jpg"); } public void paint (Graphics g) { g.drawImage(img, 100, 0, this); g.drawOval(0,0,120,50); g.drawString(Ce ziceti de asta?", 0, 25); } } l Pentru a putea fi executat de browser, clasa principal a appletului trebuie s fie public .

Crearea unui applet simplu (2)


2. Salvarea fi$ierelor surs - clasa principal a appletului va fi salvat ntr-un fi$ier cu acela$i nume $i extensia java - FirstApplet.java. 3. Compilarea - javac FirstApplet.java - rezulta FirstApplet.class 4. Rularea appletului Applet-urile nu ruleaza independent. Ele pot fi rulate doar prin intermediul unui browser: Internet Explorer, Netscape, Mozilla, Opera, etc. sau printr-un program special cum ar fi appletviewer din kitul de dezvoltare J2SDK.

Crearea unui applet simplu (3)


Pentru a executa un applet trebuie s facem dou opera#ii: Crearea unui fi$ier HTML n care vom include appletul. fi$ierul simplu.html: <html> <head> <title>Primul applet Java</title> </head> <body> <applet code=FirstApplet.class width=400 height=400> </applet> </body> </html> Vizualizarea appletului: se deschide fisierul simplu.html folosind unul din browser-ele amintite sau efectund apelul: appletviewer simplu.html.

Ciclul de via ! al unui applet


Fiecare etap este strns legat de un eveniment generat de c tre browser $i determin apelarea unei metode specifice din clasa ce implementeaz appletul. Inc rcarea n memorie Este creat o instan#a a clasei principale a appletului $i nc rcat n memorie. Ini#ializarea Este apelat metoda init ce permite ini#ializarea diverselor variabile,citirea unor parametri de intrare, etc. Pornirea Este apelat metoda start Execu#ia propriu-zis
l

Interac#iunea dintre utilizator $i componentele afi$ate pe suprafa#a appletului Executarea unui anumit cod ntr-un fir de execu#ie. In unele situa#ii ntreaga execu#ie a appletului se consum la etapele de ini#ializare $i pornire.

Ciclul de via ! al unui applet


Oprirea temporar - este apelat metoda stop ce opre$te temporar execu#ia pe perioada n care nu este vizibil, pentru a nu consuma inutil din timpul procesorului.

n cazul n care utilizatorul p r se$te pagina Web n care ruleaz appletul dac fereastra browserului este minimizat . n momentul n care pagina Web ce con#ine appletul devine din nou activ , va fi reapelat metoda start.

Oprirea definitiv - La nchiderea tuturor instan#elor browserului folosit pentru vizualizare, appletul va fi eliminat din memorie $i va fi apelat metoda destroy a acestuia, pentru a-i permite s elibereze resursele de#inute. - Apelul metodei destroy este ntotdeauna precedat de apelul lui stop.

Metodele specifice appleturilor


lAceste

metode sunt apelate automat la diverse evenimente generate de c tre browser $i nu trebuie apelate explicit din program lsunt definite n clasa Applet

Metoda init

Situa#ia n care este apelat La ini#ializarea appletului. Teoretic, aceast metod ar trebui s se apeleze o singur dat , la prima afi$are a appletului n pagin , ns , la unele browsere, este posibil ca ea s se apeleze de mai multe ori. Imediat dup ini#ializare $i de fiecare dat cnd appletul redevine activ, dup o oprire temporar . De fiecare dat cnd appletul nu mai este vizibil (pagina Web nu mai este vizibil , fereastra browserului este minimizat , etc) $i nainte de destroy. La nchiderea ultimei instan#e a browserului care a nc rcat n memorie clasa principal a appletului.

start

stop

destroy

Structura general! a unui applet


import javax.swing.*; import java.awt.*; import java.awt.event.*; public class StructuraApplet extends JApplet { public void init() { } public void start() { } public void stop() { } public void destroy() { } }

Interfa a grafic! cu utilizatorul


l

Clasa Applet este o extensie a superclasei Container, ceea ce nseamn c appleturile sunt, nainte de toate, suprafe#e de afi$are. Plasarea componentelor, gestionarea pozi#ion rii lor $i tratarea evenimentelor generate se realizeaz la fel ca $i n cazul aplica#iilor. Uzual, ad ugarea componentelor pe suprafa#a appletului precum $i stabilirea obiectelor responsabile cu tratarea evenimentelor generate sunt opera#iuni ce vor fi realizate n metoda init. Gestionarul de pozi#ionare implicit este FlowLayout, ns acesta poate fi schimbat prin metoda setLayout.

Definirea $i folosirea parametrilor


Parametrii sunt pentru appleturi ceea ce argumentele de la linia de comand sunt pentru aplica#iile independente. l Permit utilizatorului s personalizeze aspectul sau comportarea unui applet f r a-i schimba codul $i recompila clasele. l Definirea: n cadrul tagului APPLET din documentul HTML ce con#ine appletul prin atributul PARAM. l Fiecare parametru are un nume, specificat prin NAME $i o valoare, specificat prin VALUE: <APPLET CODE="TestParametri.class" WIDTH=100 HEIGHT=50> <PARAM NAME=textAfisat VALUE="Salut"> <PARAM NAME=numeFont VALUE="Times New Roman"> <PARAM NAME=dimFont VALUE=20> </APPLET> l tipul parametrilor este ntotdeauna $ir de caractere, indiferent dac valoarea este ntre ghilimele sau nu. l Fiecare applet are $i un set de parametri prestabili#i ale c ror nume nu vor putea fi folosite pentru definirea de noi parametri
l

Definirea $i folosirea parametrilor


l

getParameter: prime$te ca argument numele unui parametru $i returneaz valoarea acestuia. In cazul n care nu exist nici un parametru cu numele specificat, metoda ntoarce null, caz n care programul trebuie s atribuie o valoare implicit variabilei n care se dorea citirea respectivului parametru. Orice applet poate pune la dispozi#ie o documenta#ie referitoare la parametrii pe care i suport Aceasta se realizeaz prin supradefinirea metodei getParameterInfo, care returneaz un vector format din triplete de $iruri (numele parametrului, tipul s u $i o descriere a sa). Informa#iile furnizate de un applet pot fi citite din browserul folosit pentru vizualizare prin metode specifice acestuia. De exemplu, n appletviewer informa#iile despre parametri pot fi vizualizate la rubrica Info din meniul Applet, n Netscape se folose$te op#iunea Page info din meniul View, etc.

Folosirea parametrilor
un applet care s afi$eaz un text primit ca parametru, folosind un font cu numele $i dimensiunea specificate de asemenea ca parametri. import javax . swing.* ; import java . awt .*; public class TestParametri extends JApplet { String text , numeFont ; int dimFont ; public void init () { text = getParameter ("textAfisat"); if ( text == null ) text = " Hello "; // valoare implicita numeFont = getParameter ("numeFont"); if ( numeFont == null ) numeFont = " Arial "; try { dimFont = Integer . parseInt ( getParameter ("dimFont")); } catch ( NumberFormatException e) { dimFont = 16; } }
l

Folosirea parametrilor
public void paint ( Graphics g) { g. setFont (new Font ( numeFont , Font .BOLD , dimFont )); g. drawString (text , 20, 20); } public String [][] getParameterInfo () { String [][] info = { // Nume Tip Descriere {" textAfisat ", " String ", " Sirul ce va fi afisat "}, {" numeFont ", " String ", " Numele fontului "}, {" dimFont ", "int ", " Dimensiunea fontului "} }; return info ; } }

Tag-ul APPLET
l

Sintaxa complet a tagului APPLET, cu ajutorul c ruia pot fi incluse appleturi n cadrul paginilor Web este: <APPLET CODE = clasaApplet WIDTH = latimeInPixeli HEIGHT = inaltimeInPixeli [ARCHIVE = arhiva.jar] [CODEBASE = URLApplet] [ALT = textAlternativ] [NAME = numeInstantaApplet] [ALIGN = aliniere] [VSPACE = spatiuVertical] [HSPACE = spatiuOrizontal] > [< PARAM NAME = parametru1 VALUE = valoare1 >] [< PARAM NAME = parametru2 VALUE = valoare2 >] ... [text HTML alternativ] </APPLET> Atributele puse ntre paranteze p trate sunt op#ionale.

Tag-ul APPLET
CODE = clasaApplet Numele fi$ierului ce con#ine clasa principal a appletului. Acesta va fi c utat n directorul specificat de CODEBASE. Extensia .class poate sau nu s apar . WIDTH =latimeInPixeli, HEIGHT =inaltimeInPixeli Specific l #imea $i n l#imea suprafe#ei n care va fi afi$at appletul. Sunt obligatorii. ARCHIVE = arhiva.jar Specific arhiva n care se g sesc clasele appletului. CODEBASE = directorApplet Specific URL-ul la care se g se$te clasa appletului. Uzual se exprim relativ la directorul documentului HTML. In cazul n care lipse$te, se consider implicit URL-ul documentului. ALT = textAlternativ Specific textul ce trebuie afi$at dac browserul n#elege tagul APPLET dar nu poate rula appleturi Java.

Tag-ul APPLET
NAME =numeInstantaApplet Ofer posibilitatea de a da un nume respectivei instan#e a appletului, astfel nct mai multe appleturi aflate pe aceea$i pagin s poat comunica ntre ele folosindu-se de numele lor. ALIGN =aliniere Semnific modalitatea de aliniere a appletului n pagina Web. Acest atribut poate primi una din urm toarele valori: left, right, top, texttop, middle, absmiddle, baseline, bottom, absbottom VSPACE =spatiuVertical, HSPACE = spatiuOrizontal Specific numarul de pixeli dintre applet $i marginile suprafetei de afi$are. PARAM Tag-urile PARAM sunt folosite pentru specificarea parametrilor unui applet text HTML alternativ Este textul ce va fi afi$at n cazul n care browserul nu ntelege tagul APPLET. Browserele Java-enabled vor ignora acest text.

Alte metode oferite de clasa Applet


Punerea la dispozitie a unor informa#ii despre applet - getAppletInfo: permite specificarea unor informa#ii legate de applet cum ar fi numele, autorul, versiunea, etc. Metoda returneaz un sir de caractere continnd informa#iile respective. public String getAppletInfo() { return "Applet simplist, autor necunoscut, ver 1.0"; } l Aflarea adreselor URL referitoare la applet getCodeBase - returneaz URL-ul directorului ce con#ine clasa appletului; getDocumentBase - returneaz URL-ul directorului ce con#ine documentul HTML n care este inclus appletul respectiv. Aceste metode sunt foarte utile deoarece permit specificarea relativ a unor fi$iere folosite de un applet, cum ar fi imagini sau sunete.
l

Alte metode oferite de clasa Applet


Afi$area unor mesaje n bara de stare a browserului public void init() { showStatus("Initializare applet..."); } l Afi$area imaginilor l prin intermediul unei componente ce permite acest lucru (Canvas), fie direct n metoda paint a appletului, folosind metoda drawImage a clasei Graphics. l ob#inerea unei referin#e la imaginea respectiv se va face cu ajutorul metodei getImage din clasa Applet. l argument: adresa URL absolut a fi$ierului ce reprezint imaginea calea relativ la o anumit adres URL l cea a directorului n care se g se$te documentul HTML ce con#ine appletul (getDocumentBase) l cea a directorului n care se g se$te clasa appletului (getCodeBase).
l

Afi$area imaginilor
import javax . swing . *; import java . awt .*; public class Imagini extends JApplet { Image img = null ; public void init () { img = getImage ( getCodeBase () , "taz.gif"); } public void paint ( Graphics g) { g. drawImage (img , 0, 0, this ); } }

Alte metode oferite de clasa Applet


l

Aflarea contextului de execu#ie: pagina n care acesta ruleaz , eventual mpreun cu alte appleturi este descris de interfa#a AppletContext. Crearea unui obiect ce implementeaz aceast interfa# se realizeaz de c tre browser, la apelul metodei getAppletContext a clasei Applet. Prin intermediul acestei interfe#e un applet poate vedea n jurul sau, putnd comunica cu alte appleturi aflate pe aceeasi pagin sau cere browser-ului s deschid diverse documente AppletContext contex = getAppletContext(); Afi$area unor documente n browser showDocument: prime$te adresa URL a fi$ierului ce con#ine documentul pe care dorim sa-l deschidem (text, html, imagine, etc). Aceast metod este accesat prin intermediul contextului de execu#ie al appletului.

try { URL doc = new URL("http://www.infoiasi.ro"); getAppletContext().showDocument(doc); } catch(MalformedURLException e) { System.err.println("URL invalid! \n" + e);}

Arhivarea appleturilor
pentru ca un applet aflat pe o pagin Web s poat fi executat codul s u va fi transferat de pe serverul care g zduie$te pagina Web solicitat pe ma$ina clientului. l dimensiunea fi$ierelor care formeaz appletul trebuie s fie ct mai redus l dac appletul con#ine $i alte clase n afar de cea principal sau diverse resurse (imagini, sunete, etc), acestea vor fi transferate prin re#ea abia n momentul n care va fi nevoie de ele, oprind astfel temporar activitatea appletului pn la nc rcarea lor. l cea mai eficient modalitate de a distribui un applet este s arhiv m toate fi$ierele necesare acestuia. l Arhivarea fi$ierelor unui applet se face cu utilitarul jar, oferit n distribu#ia J2SDK. // Exemplu jar cvf arhiva.jar ClasaPrincipala.class AltaClasa.class imagine.jpg sunet.au // sau jar cvf arhiva.jar *.class *.jpg *.au l Includerea unui applet arhivat ntr-o pagin Web se realizeaz specificnd pe lng numele clasei principale $i numele arhivei care o con#ine: <applet archive=arhiva.jar code=ClasaPrincipala width=400 height=200 />
l

Restric ii de securitate
un applet se execut pe ma$ina utilizatorului care a solicitat pagina Web ce con#ine appletul respectiv l este foarte important s existe anumite restric#ii de securitate care s controleze activitatea acestuia, pentru a preveni ac#iuni r u inten#ionate, cum ar fi $tergeri de fi$iere, etc., care s aduc prejudicii utilizatorului. l procesul care ruleaz appleturi instaleaz un manager de securitate, un obiect de tip SecurityManager care va superviza activitatea metodelor appletului, aruncnd excep#ii de tip SecurityException n cazul n care una din acestea ncearc s efectueze o opera#ie nepermis . Un applet nu poate s : Citeasc sau s scrie fi$iere de pe calculatorul pe care a fost ncarcat (client). Deschid conexiuni cu alte ma$ini n afar de cea de pe care provine (host). Porneasc programe pe ma$ina client. Citeasc diverse propriet #i ale sistemului de operare al clientului. Ferestrele folosite de un applet, altele dect cea a browserului, vor ar ta altfel dect ntr-o aplica#ie obi$nuit , indicnd faptul c au fost create de un applet.
l

Appleturi care sunt $i aplica ii


l

Deoarece clasa Applet este derivat din Container, deci $i din Component, ea descrie o suprafa# de afi$are care poate fi inclus ca orice alt component ntr-un alt container, cum ar fi o fereastr . l Un applet poate func#iona $i ca o aplica#ie independent astfel: Ad ug m metoda main clasei care descrie appletul, n care vom face opera#iunile urm toare. Cre m o instan# a appletului $i o ad ug m pe suprafa#a unei ferestre. Apel m metodele init $i start, care ar fi fost apelate automat de c tre browser. Facem fereastra vizibil .

Applet $i aplica ie
import java . applet . Applet ; import java . awt .*; public class AppletAplicatie extends Applet { public void init () { add (new Label (" Applet si aplicatie ")); } public static void main ( String args []) { AppletAplicatie applet = new AppletAplicatie (); Frame f = new Frame (" Applet si aplicatie "); f. setSize (200 , 200) ; f.add(applet , BorderLayout . CENTER ); applet . init (); applet . start (); f. show (); } }

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