Sistem de Appleturi Publicitare Elaborate In Mediul Java

TEZA DE LICENȚĂ

Sistem de appleturi publicitare elaborate

în mediul JAVA

CUPRINS

SARCINA

ADNOTARE

AДHOTAЦИЯ

ADNOTATION

LISTA ABREVIERILOR

INTRODUCERE

1. ANALIZA GENERALĂ A PUBLICITĂȚII ȘI AL APPLET-URILOR JAVA

1.1. Introducere

1.2 Publicitatea online

1.3 Privirea ]n linii mari asupra pieții de publicitate în Moldova

1.4. Publicitatea contextuală în Moldova

1.5.Tipuri de publicitate online practicate în Moldova

1.6. Concluzii la capitolul 1

2. Elaborarea unui applet publicitar folosind java

2.1 Java

2.2. Applet-ul Java

2.3. Restricții de securitate pentru Applet

2.4. Ciclul de viață al unui applet

2.5. Încadrarea unui applet în fișier HTML

2.6. JApplet și Swing-ul

2.7. Instrucțiunea if, else, else if

2.8. Cîmpurile și ariile de text

2.9. Componenta JComboBox și JScrollPane

2.10. Componenta JColoChooser

2.11.Utilizarea componetei JLable

2.12 Citirea și scrierea unui obiect într-un fișier

3. Descrierea sistemului

3.1. Ghid utilizator

3.2. Ghid programator

3.2.1 Interfața de lucru a platformei Eclipse

3.2.2 Crearea unui proiect Java

3.2.3 Crearea pachetelor

3.2.3 Crearea claselor

3.3. Concluzii la capitolul 3

CONCLUZII GENERALE ȘI RECOMANDĂRI

BIBLIOGRAFIE

ANEXA 1. Codul sursă a web-cursului

DECLARAȚIA PRIVIND ASUMAREA RĂSPUNDERII

CURRICULUM VITAE

DATE PRIVIND CONTROLUL TEHNIC AL TEZEI

.

LISTA ABREVIERILOR

INTRODUCERE

În prezent Internetul are o răspindire foarte largă nu numai în Republica Moldova ci și în toată lumea. De pe zi ce trece el se extinde tot mai tare și mai tare, astfel încadrînd tot mai multi utilizatori care se conectează zilnic la această rețea globală. El joacă un rol important în răspîndirea publicităților prin intermediul căreia se informează populația. La ora actuală publitatea a devenit ceva foarte important, ba chiar mai mult este indispensabilă pentru promovarea bunurilor, serviciilor și ideilor pe care le oferă nu doar companiile mari ci și chiar oamenii de rînd.

Majoritatea firmelor, fie ele mici sau mari apelează la agenții de publicitate din cauza neputinței de a crea o publicitate, odată cu care se reduce flexibilitatea publicitații și crește costul pe producție din cauza cheltuelilor.

Actualitatea și importanța: Nu numai in Internet sau massmedia putem vedea publicități, ba chiar și pe stadă le putem intîlni începînd de la cele mai simple pîna la cele mai complexe.

Pentru a realiza o astfel de publicitate au fost elaborate diferite soft-uri pentru a putea elabora o publicitate cît mai atrăgătoare pentru clienți. Cu toate acestea realizatorii au creat un produs cu un nivel de greutate foarte ridicat, reducînd considerabil utilizatorii, permițînd utilizarea doar de care persoanele care au cunostințe în domeniu ci nu de către orice persoană care nu a fost intruit în folosirea soft-ului.

Scopul și obiectivele tezei: În această teză noi vom elabora un program in mediu Java, care ne va permite crearea applet-urilor publicitare. Acest program are scopul de a fi cît mai simplu pentru a permite să fie utilizat nu numai de către persoanele din domeniu, ci și de către persoanele simple, adica oamenii din diverse domenii de activitate nespecializate în această sferă.

Această lucrare prezintă o aplicație ce constă într-un generator de applet-uri, construit utilizînd tehnologia Java. Acest program permite crearea unei publicități unde putem:

Să alegem lungimea si inalțimea dorită.

Să alegem culoarea, font-ul, stilul, și mărimea textului dorit .

Arie unde să introducem textul.

Butoane pentru a genera, salva, deschide, șterge și a ieși.

Spațiu pentru a vizualiza produsul generat.

Noutatea științifico – practică a rezultatelor obținute: Prin crearea a unui astfel de sistem, noi vom analiza și trece prin toate fazele elaborării unui applet, ceea ce ne va permite în viitor să creăm practic orice applet dorim. Folosirea tehnologiei Java ne oferă mari benificii în atingerea scopurilor propuse. În teza dată noi facem analiza tehnologie Java pentru elaborarea unui applet, proiectăm și elaborăm un sistem ce va genera applet-uri, simplu de utilizat.

Sumarul compartimentelor tezei:

În această teză sunt incluse 3 capitole:

Analiza generala a unui applet -aici se analizează publicitatea folosită pe site-urile web din Moldova precum și importanța sa.

Elaborarea unui applet folosind tehnologia Java –aici sunt descrise în detalii principiile de elaborare a unui applet folosind tehnologia Java.

În capitolul dat va fi prezentat un ghid pentru programiști și unul pentru utilizatori.

Fiecare capitol se încheie cu concluzii referitoare la capitolul dat.

Importanța teoretică și valoarea aplicativă a lucrării: Datorită sistemului dat va fi ușor de elaborat de la distanță prin Internet o publicitate.

Sistemul este dinamic și bine amenajat printr-o interfață grafică atrăgatoare. Mentenanța sistemului poate fi (și este) făcută la distanță prin rețeaua internet.

Sistemul dat va simplifica realizarea unei simple publicități de catre persoanele din orice domeniu de activitate.

ANALIZA GENERALĂ A PUBLICITĂȚII ȘI

AL APPLET-URILOR JAVA

1.1. Introducere

S-ar părea că astăzi sunt inventate deja toate limbajele de programare, care vă puteți gândi. Dar este unul special, numit Java . Acest limbaj a fost capabil de a obține o reputație foarte proeminentă în ultimii ani, așa cum este axat pe cel mai popular mediu de calcul – în rețeaua Internet și serverele Web.

Calculatoarele personale au făcut tehnologiile informaționale o parte a culturii populare. Ce sa schimbat în lume în ultimii ani, de ce acest fenomen a devenit posibil.

Internetul a schimbat totul. Acesta a devenit disponibil pentru milioane de oameni departe de probleme tehnice. Numărul de utilizatori de Internet din ordin de mărime nu este diferit de numărul de utilizatori de calculatoare personale și continuă să crească exploziv. În același timp, Internetul are o viteză de propagare a inovațiilor tehnologice informații care nu ar putea, nu ar fi în măsură să ofere canalele de distribuție tradiționale presate de timp.

Limbajul Java este derivat de la limbajul de programare Oak (ci nu de la C + +, așa cum mulți oameni cred). Oak a fost adaptat pentru a lucra în Internet și apoi a fost redenumit în Java .

Sintaxa Java aproape de sintaxa limbajului C++. Moștenind cel mai bun al limbajului de programare C++, limbajul Java astfel scăpat de unele neajunsuri din C++, astfel încât acesta a devenit mai ușor la programare.

Aceast limbaj indicii care sunt dificil de utilizat și potențial poate avea acces la programe care nu aparțin regiunii sale de memorie. Nici o moștenire și template-uri multiple, cu toate acestea funcționalitatea limbajului Java nu va fi rănită .

Avantajul imens pe care îl are Java este că în aceast limbaj, puteți crea aplicații care pot rula pe mai multe platforme, la rețeaua de calculatoare conectate la Internet, de diferite tipuri – Pentium PC, Macintosh, stații de lucru Sun , și așa mai departe.

Chiar și în computerul generate bazat pe procesoare Intel , există mai multe platforme, de exemplu, versiunea Microsoft Windows 3.1, Windows 95, Windows NT, OS / 2, Solaris, diferite soiuri de sistem de operare UNIX cu Interfață grafică pentru utilizator ¬ X Windows. Între timp, creînd un server Web de pe Internet, ar dori să vadă le-ar putea folosi cel mai mare număr posibil de persoane. În acest caz, cererile de salvare Java, conceput pentru a lucra pe mai multe platforme și nu sunt specifice tipului de procesor și sistem de operare.

Programe compilate în limbajul de programare Java, pot fi împărțite de scopul lor în două grupuri mari.

Primul grup include aplicații Java, concepute pentru a funcționa de sine stătător în mașină specială Java interpretativ. Punerea în aplicare a acestui aparat constituit pentru toate platformele de calcul majore.

Al doilea grup – așa numitele applet ( applet-uri ). Applet-uri sunt o varietate de aplicații Java, care este interpretat de o mașină virtuală Java, încorporate în aproape toate browserele moderne.

Cererile referitoare la primul grup, le vom numi aplicații Java, – acestea sunt programe de sine stătătoare obișnuite. Din moment ce acestea nu conțin cod nativ și rulează un interpret special, performanța lor este semnificativ mai mic decât cel al programelor convenționale compilate, de exemplu, limbajul de programare C++. Dar noi nu trebuie să uităm că un program Java rulează fără recompilare și-i dă posibilitatea de a lucra pe orice platformă, care în sine este de o mare importanță în ceea ce privește dezvoltarea Internet-ului.

Applet-uri Java încorporate în documente HTML, stocate pe serverul web. Cu applet-uri este posibil de a face paginile Web dinamice și interactive.

Applet-urile permit prelucrarea locală a datelor primite de la un server Web sau o intrare de utilizator de la tastatură. Din motive de securitate, applet-urile (spre deosebire de aplicații convenționale Java ) nu au acces la sistemul de fișiere de pe computerul local. Toate datele de prelucrare pot fi obținute numai de la serverul web. Prelucrare mai complexă de date se poate face prin organizarea de interacțiune dintre applet-uri și extensii de server Web – aplicații CGI și ISAPI .

Pentru a îmbunătăți performanța aplicațiilor Java în browser-ele moderne care au încorporate așa numite "on the fly " – Just – In-Time compilare ( JIT ). JIT Este compilarea unui cod care ale loc în timpul execuției programului. Când încărcați mai întâi codul applet este tradus în programul normal executabil care este stocat pe disc și pornită. Ca rezultat, viteza de ansamblu a unui applet Java crește de mai multe ori.

Limbajul Java este orientat pe obiect și vine cu clasele de bibliotecă cu volum destul de suficient. Java simplifică foarte mult dezvoltarea de aplicații puse la programator instrumente puternice pentru a rezolva problemele comune.

Prin urmare, programatorul se poate concentra mai mult pe rezolvarea problemelor aplicate, și nu cum ar fi, de exemplu, organizarea de tablouri dinamice, interacțiunea cu sistemul de operare sau punerea în aplicare a elementelor de interfață cu utilizatorul.

1.2. Publicitatea online

Publicitatea are scop drept promovarea bunurilor, serviciilor, companiilor și ideilor, de cele mai multe ori prin mesaje. Scopul acestor mesaje este stimularea dorințelor clienților potențiali, și formarea asociațiilor pozitive în legătură cu produsul sau compania ce îl promovează, scop care este atins prin folosirea metodelor de.

Publicitatea online, cunoscută și sub numele de publicitate interactivă, este o formă de publicitate în Internet care are la bază media online ca pagini web, newsletter sau e-mail pentru a transmite sau a se face vazut un mesaj de către utilizatori.

La prima vedere o publicitate este o publicitate și numic mai mult dar cînd începem să analizăm mai detaliat acest subiect descoperim că publicitatea joacă un rol esențial în sistemul economic, social, politic și cultural al unei țări. Importanța acestui rol este după părerea multor economiști direct proporțională cu nivelul de dezvoltare al unei țări.

Publicitatea are mai multe nuanțe pozitive care se răsfrîng asupra:

1. Economiei

Publicitatea are un efect pozitiv asupra economiei deoarece anume ea este cea care stimulează cerera de buniri și servicii ale populației. Producătorii știu că datorită unei publicități bune ei pot vinde foarte rapid un produs. Dacă un produs are succes o parte din profituriile realizate din vînzarea lui pot servi pentru dezvoltarea și promovarea noilor produse. Stimulînd crearea noilor produse, publicitatea stimulează creșterea concurenței pe piață. O concurență mai mare își are și ea avantajele sale și ea se vede în apariția unor prețuri mai mici și o calitatea superioară a serviciilor și produselor, în final de acestea beneficiind consumatorii și economia țării.

Un alt argument destul de important ar fi faptul că publicitatea ajută producătorii sa-și vîndă produsele în cantități m a se face vazut un mesaj de către utilizatori.

La prima vedere o publicitate este o publicitate și numic mai mult dar cînd începem să analizăm mai detaliat acest subiect descoperim că publicitatea joacă un rol esențial în sistemul economic, social, politic și cultural al unei țări. Importanța acestui rol este după părerea multor economiști direct proporțională cu nivelul de dezvoltare al unei țări.

Publicitatea are mai multe nuanțe pozitive care se răsfrîng asupra:

1. Economiei

Publicitatea are un efect pozitiv asupra economiei deoarece anume ea este cea care stimulează cerera de buniri și servicii ale populației. Producătorii știu că datorită unei publicități bune ei pot vinde foarte rapid un produs. Dacă un produs are succes o parte din profituriile realizate din vînzarea lui pot servi pentru dezvoltarea și promovarea noilor produse. Stimulînd crearea noilor produse, publicitatea stimulează creșterea concurenței pe piață. O concurență mai mare își are și ea avantajele sale și ea se vede în apariția unor prețuri mai mici și o calitatea superioară a serviciilor și produselor, în final de acestea beneficiind consumatorii și economia țării.

Un alt argument destul de important ar fi faptul că publicitatea ajută producătorii sa-și vîndă produsele în cantități mari, ca urmare are loc scăderea costurilor pe unitatea de produs și pe viitor producatorul își va permite să vîndă produse mai ieftine.Privind din alt punct de vedere publicitatea poate fi considerată nu mai mult decît o risipă de bani deoarece cheltuelile publicitare sunt incluse în costul produsului și în cele din urmă consumatorul este cel care are de suferit, deoarece plătește mai mult. Există diferite opinii care spun că mojoritatea reclamelor încurajează consumatorii să cumpere o marcă în locul alteia. Luînd în cosiderare acest punct de vedere publicitatea are ca efect principal mișcare vînzărilor de la o companie la altă companie fapt din care economia tării nu are nimic de cîștigat.

2. Societății

Publicitatea în sine are o arie largă de efect al acțiunii asupra societății. Criticile spun că anume ea este cea care încurajează materialismul făcîndui pe consumatori să creadă că cu cîte mai multe produse noi cumpără cu atît mai tare vor fi fericiți. Aceasta ideologie a pornit de la teoria că reclamele au creat din sine o cultură a cumparătorului în care achiziționarea de produse noi este fundația plăcerilor și scopurile unei societăți.

O altă categorie de critici se referă la faptul că publicitatea a avut asupra femeilor și a minorităților rasiale în anii 1950 arătau ca femeile erau pezentate ca obiecte sexuale sau decorative. În timp ce milioane de femei au deja un loc de muncă. După anul 1960, ca urmare a avut loc mișcări feministe și de a crește puterea economică a început să se dea anunțuri de femei în roluri profesionale. Cu toate acestea, multe dintre anunțuri de astăzi acordă mai multă atenție la sexualitatea feminină.

Există și alte modalități în care publicitatea poate avea un efect negativ asupra mijloacelor de informare și deasemenea asupra societății. Spe exemplu, companiile care își fac publicitatea la televiziune vor prefera canalele tv cele mai populare și programle lor, lipsită de controverse, pentru a evita ofensa anumitor părți ale societății. Acest lucru dermină televiziunea să producă cu prepomderență acest gen de emisiune. În acelaș mod are loc reclama în lumea virtuală adica pe paginile web. Drept urmare sociatatea asită la reclame, emisiuni de divertisment și pagini web extrem de originale sau mai nonconformiste.

3. Politicii

Publicitatea în zilele noastre este o componentă majoră în politica compaiilor electorale și prin urmare are o mare influență asupra procesului democratic în sine al unei societăți. Publicitatea politică dă candidaților posibilitatea de a-și face cunoscute opiniile și scopurile pe viitor legate de diverse probleme ale societății. Acest tip de publicitate este foate important pentru candidații ce dețin poziții înalte de stat, deoarece ea ajunge deodată la mai mulți oameni, datorită costurilor foarte mari ale publicității TV, publicitatea se indreaptă spe lumea virtuală unde deasemenea dispune de un număr mare de vizionări.

4) Culturii

Publicitatea poate afecta sau scoate în evidență valorile culturale ale unei țări. Spre exemplu unele mesaje publicitare încurajează individualismul agresiv, lucru care poate fi în opoziție cu volorile culturale ale unui popor unde lucru în echipă este mai importan decît individualul, iar unele oferirea ajutorului persoanelor nevoiașe ceea ce stimulează apariției unui fenomen de unire și trăire în armonie. Criticile spun ca lucrul acesta ajută la distrugerea diferențelor culturale fapt ce duce la armonizarea din ce în ce mai accentută a culturii naționale. Cu toate acestea multe reclame au un caracter universal, depășind barierele culturale și chiar contribuind la dezvoltarea culturii.

1.3. Privirea în linii mari asupra pieții de publicitate în Moldova

Conform datelor Zenith Optimedia în anul 2009, cota internetului pentru cheltuelile globale în sectorul publicitar a crescut considerabil pînă la 12,6% , ceea ce ar însemna aproximativ 57 miliarde de dolari. În anul 2009 a fost depașită rata de creștere nivelului aului 2008 cu 2,1%.

Probаbil, publicitаtea pe Internet este unicul sector în afаcerea publicitаră, cаre аre o creștere constаntă în condiții de criză. În 2009, Internetul, pentru primа dаtă a întrecut revistele din punct de vedere аl cotei de piаță, iar pe viitor vа continuа să-și consolideze pozițiile: conform prognozelor Zenith Optimedia, în 2010, cota sа vа аjunge la 13,9%, în 2011 – 15,4%, în timp ce în 2012 – 17,1%. În Moldovа, Internetul și-а început dezvoltareа intensivă din 2009. Mаi detаliat despre piаța de publicitаte pe Internet în Moldova vom vorbi аdăugător. 
Cаre este cаuza creșterii stаbile prelungite a аcestui segment al pieții publicitаre? Cel mаi probаbil este că аgenții de publicitаte, tot mаi mult cred în eficiențа publicității online, cаre în timpul dezvoltării sаle (primul bаnner a аpărut încă în 1994) a evoluаt de lа exotică la mаinstream, fără de cаre nu se poate descurcа niciun proiect de afаceri de succes. 
În Moldova, se observă o dinаmică activă de înregistrаre a numelor de domenii noi pentru utilizаre corporаtivă. Compаniile din Moldovа dezvoltă în mod аctiv site-uri web corporаtive pentru afаcerea lor, ceea ce demonstrează dezvoltаrea intensivă а pieței de Internet.

Potrivit raportului din partea Asociației Agențiilor de Publicitate din Republica Moldova (AAPM), a fost estimată creșterea nevelului publicității online pe piața de publicitate de la 2% în 2009 pînă la 5,5% 2013, astfel piața de publicitate online a crescut de la 350 mii euro în 2009 pnă la 1,2 mil. euro în 2013.

Fig. 1.1. Schema creșterii prețurilor pe ani [elaborat de autor].

Internetul ca purtător de media, acoperă 51% din populația totală a țării. Tot acesta a ieșit pe prima poziție și după timpul zilnic de utilizare.

Volumul bugetelor destinate promovării pe internet depășește media generală pe piața de publicitate, pentru anul curent prognozîndu-se o pondere de 5,5% din volumul total al pieței.

Cea mai mare parte din bugetele pentru internet le revine banner-elor online, și mai puțin publicității în motoarele de căutare și rețelelor de socializare. Acest lucru se explică prin gradul de maturitate scăzut a publicității online de la noi.

Jucătorii principali care fac regulile pe această piață sunt:

Numbers – 28% (999.md, forum.md, point.md, play.md, gsm.md, ș.a.);

Mediacontact – 23% (mail.ru odnoklasniki.ru,);

Zingan.com – 20% (allmoldova.com, allfun.md, ș.a.)

ProDigital – 16% (profm.md protv.md, , inprofunzime.md, ș.a.)

Interakt – 8% (unimedia, ș.a.)

Sunt și alte site-uri, care se gestionează independent, cu toate acestea au și ele o cotă de 6% (jurnal.md, publika.md, totul.md, ș.a.).

Să vedem care sunt brandurile/companiile principale ce se promovează în mediul online de la noi. De exemplu, pe site-urile Numbers, ponderea cea mai mare (12,5%) o are publicitatea Orange, după care urmează Moldcell cu 10%. În primele 5 poziții mai intră KFU (6%), Moldtelecom (6%) și Starnet (5%).

Pentru anul 2014 se prognozează că piața de publicitate online va înregistra o sumă de 1,56 mil. de euro, cu 30 % mai mult decît în anul 2013.

În anul 2009 a avut loc creșterea popularutății ” publicității de cautare ” contextulă în rețeaua internet fiind un eveniment important pentru acel an.

Astfel, creșterea mondială a pieței-SEO după indici pe 2008 și 2009 s-a ridicat la 3,5 miliarde de dolari. Radio, televiziunea și presa scrisă nu pot atinge nivelul de targeting al publicității contextuale online. Avantajul publicității contextuale constă în faptul că ea este imposibil de blocat (spre deosebire de bannere și pop-up-uri), asta o face să fie atât de eficientă. Edițiile electronice principale au evaluat imediat situația și s-au angajat să plaseze activ publicitatea contextuală pe paginile lor virtuale. 

1.4 Publicitatea contextuală în Republica Moldova

Publicitatea contextuală este un fel unic de publicitate "inteligentă" pe Internet. Aceasta oferă ușurință în a formare și are memorie bună: contează afișarea pentru o anumită perioadă de timp, un anumit oraș un anumit public și amintiți-vă că utilizatorul a solicitat în orice moment înapoi. Transportatorii de publicitate contextuală pe internet principalele sunt sisteme de cercetare, platforme tematice și resurse cu mare ajutor.

În Republica Moldova publicitatea contextuală este la etapa de a fi încput. Publicitatea contextuală a început abia să fie învățată de către agenții de publicitatea prezenți. Publicitatea contextuală în mare parte este oferită de către Google Adwords, Begun, Yandex. Pe piața publicitară. Unul din avantajele publicității contextuale este că agenții de publicitate Principalul avantaj al publicității contextuale este faptul că agenții de publicitate plătesc pentru rezultate reale. Costul publicității contextuale în Moldova este de la 0,05 USD per click.

Redistribuirea bugetului publicități online crește brusc eficiența campaniilor de publicitate multicanal. Asociația IAB a realizat un studiul, care a permis determinarea cotei optime a internetului în cheltuielile publicitare. Conform experților, această cotă este de 10-15%. De exemplu, McDonald's, crescând cheltuielile pe publicitatea online de la 1 la 13%, și-a ridicat nivelul de recunoaștere a brand-ului cu 8 %/.

O altă tendință de dezvoltare a pieței de publicitate pe Internet este creșterea constantă a publicului țintă. Acest lucru se datorează dezvoltării continue a accesului la rețelele de internet de mare viteză în bandă largă. În Europa și SUA, mai mult de 30% din populație au acces la internet în bandă largă, alte țări rămân în urmă, dar demonstrează un ritm ridicat de creștere a acestui indicator. În Moldova, conectarea la internet crește în fiecare zi. Potrivit datelor furnizorilor de internet, creșterea în prima jumătate a anului 2010 constituie mai mult de 50%. Vom examina în detaliu numărul conexiunilor la internet în Moldova pe baza informațiilor de la furnizorii. 

Creșterea continuă a numărului de conexiuni la Internet prin acces de bandă largă ne permite să tragem concluzia că, pe lângă publicitatea contextuală, cel mai mare potențial de dezvoltare îl are publicitatea mass-media, ce are la bază noi tehnologii de targeting psihologic. În Europa, mai mult de 50% din cererile pentru efectuarea campaniile de publicitate pe Internet menționează necesitatea utilizării unor tipuri de publicitate netradiționale, cum ar fi Rich Media și MMORPG. Rich Media sunt filmulețe-Flash interactive cu caracter publicitar, care realizează scenariul propus de comunicare cu clientul. Nivelul veniturilor din acest segment pe piața mondială în 2009 a fost de 3-3,3 miliarde dolari,cu o creștere anuală de 15-25%.

În Moldova, publicitatea mass-media online este cea mai populară printre agenții de publicitate. Publicitatea mass-media online este prezentată sub formă de bannere. Editorii propun publicitate prin bannere după locația fizică, care, în întreaga lume, aproape nu se mai utilizează. Cu toate acestea, pe piața publicitară online există posibilitatea de a plasa publicitate prin bannere după afișări. Pentru agenții de publicitate, acesta este cel mai eficient mod de amplasare, care permite determinarea, cu exactitate, a numărul de afișări, clicuri, acoperirea publicului. Publicitatea prin bannere are prețuri de dumping și constituie 0,55 – 3 euro pe 1000 de afișări. Prețurile medii în Europa, Rusia, România deja reprezintă mai mult de 10 de dolari pe 1000 de afișări.

Un potențial ridicat de dezvoltare pe piața globală a publicității online îl au jocurile video de rol online amplu multi-jucător prescurtat MMORPG, rotația anuală a banilor cărora depășește PIB-ul unor țări precum Guineea și Namibia. Până în prezent, primul loc, după rotația banilor în domeniul jocurilor, îl păstrează, cu succes, SUA – 29% din piața mondială, dar China cu 27% s-a apropiat mult și arată o creștere mai ridicată lunar. 

Continuă creșterea puternică și în alte segmente de piață, cum ar fi cataloage de Internet (aproximativ 10% pe an). Conform previziunilor, în 2010, volumul acestui segment va fi de aproximativ 4 miliarde de dolari. În Moldova, acest segment este în cerere în rândul agenților de publicitate.  Anunțurile în Streaming Media demonstrează o creștere stabilă (20% pe an). Cu toate acestea, indicele absolut al acestui segment în 2009 impresionează – mai puțin de 1 miliard de dolari. 

1.5 Tipuri de publicitate online practicate în Republica Moldova

Bannere (formatele agreate sunt recomandate de IAB (Internet Advertising Board) – standard, rectangle, sky scrapper, leaderboard, overlayer, etc) – unul dintre primele medii de marketing pe Internet. Sunt practicate bannerele animate și statice, în urmatoarele formate-.swf, .gif, .jpg ,png. 

Cel mai frecvent utilizate marimi sunt: 468×60 pixeli, 728×90 pixeli, 240×80 pixeli, 120×60 pixeli si altele. Spre exemplu allmoldova.com prefera standardele recomandate de Internet Advertising Board (468×60 pixeli si 728×90 pixeli) in timp ce 999.md prefera marimi mai putin practicate la nivel international (240×80 pixeli), ceea ce duce insa la scaderea pretului pentru publicitate din moment ce exista loc pentru mai multe bannere simultan.

Fig 1.2 Publicitatea pe site-ul www.999.md [elaborat de autor].

Fig. 1.3 Publicitateapesite-ul www.allmoldova.md [elaborat de autor].

Text advertising (sau link sponsorizat) – oferit de multi jucatori de pe piata, constau intr-o legatura spre site cu o explicatie text. Pe piata noastra de publicitate online se practica text advertising-ul. Practic orice site care face parte dintr-o retea de site-uri a unei companii contine legaturi text spre celelalte. Un exemplu relevant in acest sens ar fi reteaua de site-uri a companiei Simpals, unul dintre acestea – point.md cu legaturi spre celelalte proiecte Simpals.

Fig 1.4 Publicitatea pe site-ul www.point.md [elaborat de autor].

Streaming si Broadcasting, atît audio cît si video – sunt transmisiunile in format atît video cît si audio a anumitor evenimente, emisiuni, etc. pe Internet. Play.md ofera acest tip de publicitate, fiind de obicei prezent cu translatii video online de la diverse evenimente însemnate. 

Posta electronica si Newsletter-ul. Email marketing-ul este practicat in Republica Moldova, insa primordial de catre companiile mari. Un exemplu relevant ar fi compania Moldcell.

Fig 1.5 Publicitatea pe site-ul www.moldcell.md [elaborat de autor]

Media interactiva – jocurile spre exemplu, care pot integra publicitate. Un exemplu relevant in acest sens serveste jocul online de comunitate interactiv yes.md, unde observam publicitatea cinematografului “Patria”.

Fig 1.6 Publicitatea pe site-ul www.yes.md [elaborat de autor]

Între formatele de mai sus pot aparea mixuri de tipul : banner cu streaming video, text add cu streaming audio, joc cu bannere.

Publishing, stiri, articole propriu-zise, advertoriale, comunicate de presa newsletter, RSS feed. Mai mult se practică pe site-urile informaționale, cum ar fi: www.afisha.md, www.allfun.md:

Fig 1.7 Publicitatea pe site-ul www.allfun.md [elaborat de autor]

1.6 Concluzii la capitolul 1

În capitolul 1 am studiat detaliat publicitatea online și anume acea a site-urilor din Republica Moldova, ce tipuri se utilizează precum și mărimile. Deasemenea am constatat că orice fie el proiect sau produs sau serviciu oferit de o companie sau o persoană în zilele noastre fără publicitate nu poate fi mai eficiet cunoscută de un client. Deasemenea sunt puse în evidență numeroase aspecte ale publicitații online.

Noile sisteme care sunt elaborate sunt foarte greu de utilizat, dacă persoana n-are cunoștințe în domeniu. Noi am constat că realizarea unui sistem în mediul de programare Java, ușor de utilizat va fi binevenit pentu utilizatori.

Internetul are o viteza de propagare a inovațiilor tehnologice informații care nu ar putea, nu ar fi în măsură să ofere canalele de distribuție tradiționale. Un sistem pentru realizarea publicității va permite realizarea personalizată rapidă și comodă pentru paginile web.

2. ELABORAREA UNUI APPLET PUBLICITAR FOLOSIND JAVA

2.1 Generalități despre limbajul Java

Java este un limbaj de programare orientat pe obiect, puternic tipizat, conceput de către James Gosling la Sun Microsystems (acum filială Oracle) la începutul anilor ʼ90, fiind lansat în 1995. Cele mai multe aplicații distribuite sunt scrise in Java, iar noile evoluții tehnologice permit utilizarea sa și pe dispozitive mobile gen telefon, agenda electronică, palmtop etc. In felul acesta se creează o platformă unică, la nivelul programatorului, deasupra unui mediu eterogen extrem de diversificat. Acesta este utilizat in prezent cu succes și pentru programarea aplicațiilor destinate intranet-urilor.

Limbajul împrumută o mare parte din sintaxă de la C și C++, dar are un model al obiectelor mai simplu și prezintă mai puține facilități de nivel jos. Un program Java compilat, corect scris, poate fi rulat fără modificări pe orice platformă care e instalată o mașină virtuală Java (engleză Java Virtual Machine, prescurtat JVM). Acest nivel de portabilitate (inexistent pentru limbaje mai vechi cum ar fi C) este posibil deoarece sursele Java sunt compilate într-un format standard numit cod de octeți (engleză byte-code) care este intermediar între codul mașină (dependent de tipul calculatorului) și codul sursă.

Mașina virtuală Java este mediul în care se execută programele Java. În prezent, există mai mulți furnizori de JVM, printre care Oracle, IBM, Bea, FSF. În 2006, Sun a anunțat că face disponibilă varianta sa de JVM ca open-source.

Există 4 platforme Java furnizate de Oracle:

Java Card – pentru smartcard-uri.

Java Platform, Micro Edition (Java ME) — pentru hardware cu resurse limitate, gen PDA sau telefoane mobile.

Java Platform, Standard Edition (Java SE) — pentru sisteme gen workstation, este ceea ce se gaseste pe PC-uri,

Java Platform, Enterprise Edition (Java EE) — pentru sisteme de calcul mari, eventual distribuite.

2.2 Ce este un Applet elaborat în Java

Applet-ul Java este o mica aplicație care este scrisă în java și livrate la utilizator sub formă de bytecode. Utilizatorul lansează applet-ul Java dintr-o pagină web dupa care se execută în cadrul unei Java Virtual Machine (JVM), care este instalată pe calculatorul utilizatorului, într-un proces separat in sine de browser-ul web. În linii generale Applet-urile sun subclase ale clasei Applet, care la rîndul lor sunt incluse într-un fisier de tip HTML, dupa care vor fi lansate în execuție imediat la încărcarea totală a paginii într-un browser ca Internet Explorer, Netscape Navigator, sau altul care permite rularea applet-urilor Java.

Datorită faptului că rulează într-o pagină Web, appleturile vor avea proprietățile corespunzătoare acesteia și nicidecum altele. O distincție majoră este că appletul Java nu are acces la sistemul de fișiere local, deoarece acesta ar însemna un pericol major pentru calculatoarele conectate la Internet, prin faptul că astfel se evită modificarea sau distrugerea sistemului de fișiere.

Java pot rula într-un browser Web folosind un Java Virtual Machine ( JVM ), sau în applet-viewer Sun, facilitate de sine stătătoare pentru applet-uri de testare. Java – applet-uri au fost introduse în prima versiune a limbajului Java în 1995. Java – applet-uri sunt, de obicei, scris în limbajul de programare Java, dar poate fi, de asemenea, scrise în alte limbi, care compilează bytecode Java, cum ar fi Jython.

Applet-uri sunt folosite pentru a furniza caracteristici interactive de aplicatii web, care nu pot fi furnizate de către HTML. Din moment ce bytecod Java este independent de platforma, Java – applet-uri care pot fi executate de către browser plug multe platforme, inclusiv Microsoft z

Uzual, clasa principală va fi salvată într-un fișier cu același nume și extensia .java. Așadar, vom salva clasa de mai sus într-un fisier AppletSimplu.java.

2.3 Restricții de securitate pentru Applet

Restricții de securitate applet constă în siguranța ce este menținută atunci când rulează applet-uri. Java utilizeazăașa – numitul " model de securitate sendbox " pentru executarea applet-uri pentru a preveni programe distructive de deteriorarea sistemului pe care browser-ul este pornit. Applet-uri nu au voie să folosească "sandbox" resurse din afara limitează la următoarele activități:

Applets nu li se permite să citească , sau scrie în sistemul de fișiere al computerului. În caz contrar, acestea ar putea deteriora fișierele și răspândi viruși

applet-uri nu sunt permise pentru a rula programe pe calculator a browser-ului. Altfel, ele s-ar putea numi programe locale distructive și deteriora sistemul local de pe utilizator calculator.

applet-uri nu sunt permise pentru a stabili conexiuni între computerul utilizatorului și orice alt calculator, cu excepția pentru serverul pe care sunt stocate în applet-uri, această restricție previne applet-ul de conectare calculatorul utilizatorului la un alt calculator fără cunoștințelor utilizatorului.

2.4 Ciclul de viata al unui applet

Execuția unui applet începe în momentul în care un browser afișează o pagină Web în care este inclus appletul nostru și care trece prin mai multe etape. Fiecare etapă este strîns legată de un eveniment generat de catre browser si determina apelarea unei metode specifice din clasa ce implementează appletul. Browser-ul Web controlează și execută applet-uri folosind metodele applet a ciclului de viață.

Applet-uri sunt de fapt executați din recipientul applet, care este un plug-in de un browser Web. A plug-in este o componentă software care poate fi adăugat într-un software de mare pentru a furniza informații suplimentare funcții. Clasa Applet conține init (), start (), stop (), și distruge () metode, cunoscut sub numele de metodele ciclului de viață. Aceste metode sunt numite de către containerul applet de a controla executarea unui applet. Acestea sunt puse în aplicare cu un corp gol din applet clasă, astfel încât acestea să nu fac nimic în mod implicit. Le-ai putea trece într-o subclasă de Applet pentru a efectua operațiile dorite.

Fig. 2.1 Schema execuției unui applet [elaborat de autor]

Metoda de inițializare init()

Metoda de inițializare este invocată după ce este creat applet. În cazul în care o subclasă a applet are o inițializare pentru a efectua, acesta trebuie să anuleze această metodă . Funcțiile de obicei implementate în această metodă se numără obținerea valorilor parametrilor șir de tag-ul <applet> în HTML pagina.

Metoda de pornire start()

Metoda de pornire este invocată după metoda de inițializare. Se mai numește atunci când utilizatorul se întoarce la pagina Web care conține applet după navigarea alte pagini. O subclasă de Applet suprascrie această metodă dacă are orice operație care trebuie efectuată ori de câte ori pagina Web care conține applet-ul este vizitat. Un applet cu animație, de exemplu, s-ar putea porni cronometrul pentru a relua animație.

Metoda de oprire stop()

Metoda de oprire este opusul a metodei de start. Metoda de start se numește atunci când utilizatorul se mută înapoi la pagina care contine applet-ul. Metoda de oprire este invocată atunci când utilizatorul părăsește pagina. O subclasă de Applet suprascrie această metodă dacă are orice operație de efectuat fiecare timp pagina Web care conține applet-ul nu mai este vizibil. Un applet cu animație, pentru de exemplu, s-ar putea opri cronometrul pentru a întrerupe animație.

Metoda de distrugere distroy()

Metoda distruge este invocată atunci când browser-ul iese în mod normal pentru a informa applet care se nu mai este necesară și ar trebui să elibereze toate resursele care le-a alocat. Metoda de oprire este întotdeauna numit înainte de metoda distruge. O subclasă de Applet suprascrie această metodă dacă are orice operație să se efectueze înainte acesta este distrus. De obicei, nu veți avea nevoie pentru a trece peste această metodă dacă nu vrei să-i elibereze resurse specifice care applet-ul creat.

2.5 Încadrarea unui applet în fișier HTML

Pentru a rula un applet, trebuie să creați un fișier HTML cu o etichetă <applet> pentru încorporarea applet. HTML este un limbaj de marcare care prezintă documentele statice de pe Web. Acesta utilizează tag-uri pentru a instrui browser-ul Web cum să facă o pagină Web și conține o etichetă numită <applet> care încorporează applet-uri într-o pagină Web.

Un tag-ul HTML este o instrucțiune de browser-ul Web . Browser-ul interpretează tag-ul și decide modul de afișare pentru a putea trata conținutul ulterioare ale documentului HTML. Tag-uri sunt închise între paranteze ( < > ) . Primul cuvânt într-o etichetă , a numit tag-ul , descrie Funcții tag . O etichetă poate avea atribute suplimentare , uneori cu valori după semnul egal , care definesc în continuare a acțiunii tag-ul lui. De exemplu, în fișierul HTML, este <applet> numele tag-ul, și codul, lățimea, înălțimea și sunt atribute. Atributele lățime și înălțime specifica zona de vizualizare dreptunghiular al applet. Cele mai multe tag-uri au o etichetă de început și o etichetă de sfârșit corespunzătoare. Tag-ul are un efect specific asupra regiune între eticheta de start și tag-ul final. De exemplu, <applet…> … < / applet > spune browser-ul pentru a afișa un applet. Un tag-ul final este întotdeauna nume eticheta de start a precedat de un slash.

Un document HTML începe cu tag-ul <html>, care declară că documentul este scrise în HTML. Fiecare document are două părți, un cap și un corp, definite de <head> și tag-uri <body>, respectiv. Partea cap conține titlul documentului, inclusiv <title> tag-ul și alte informații pe care browser-ul se poate folosi la vizualizare, documentul, iar corpul deține conținutul real al documentului. Pentru a vizualiza acest applet trebuie să cream un document HTML, să-i spunem demo.html, în care să specificam cel puțin urmatoarele informatii:

<HTML> //declararea tipului fișierului

<HEAD> //dechiderea tag-ului cap

<TITLE> Un applet simplu </TITLE> //declararea denumirii

</HEAD> //închiderea tag-ului

<APPLET CODE="AppletSimplu.class" WIDTH=100 HEIGHT=50></APPLET>

//corpul fișierului

</HTML> // finalizarea fișierului

2.6 JApplet și biblioteca Swing

Clasele care formează biblioteca Swing se găsesc ȋn pachetul javax.swing. Swing include și clasa javax.swing. JApplet este de fapt o subclasă a lui Applet, deci JApplet este de fapt un Applet. JApplet pentru scrierea applet-urilor poate servi ca bază. Cu toate acestea JAppleturile

au o extra structură pe care Applet-urile nu o pot avea. Desenarea ȋn JApplet este mult mai complexă. Deci, dacă creăm o subclasă a lui JApplet, nu trebuie să scriem metod paint() pentru pentru aceasta subclasă. Pentru a desena ȋntr-un JApplet, trebuie să adăugăm o componentă ȋn acel applet pentru acest scop. Totuși, este necesar să se scrie o metodă init() pentru o subclasă a lui JApplet. Următorul exemplu este un simplu JApplet care folosește Swing. În programe se folosesc componente precum butoanele pentru a putea interacționa cu utilizatorul. Applet-ul următor conține un buton. Dacă se apasă butonul, o fereastră se va deschide cu un mesaj și cu un buton “OK”. Se apasă butonul “OK” pentru a ȋnchide fereastra. Butonul din acest applet este un obiect care aparține clasei Jbutton. Un applet cînd este creat, butonul trebuie creat și adăugat applet-ului. În metoda init() această parte a procesului de inițializare.

JButton bttn = new JButton("Click Me!");

Butonul nu o să apară automat pe ecran. Trebuie adăugat astfel:

getContentPane().add(bttn);

Când butonul este apăsat de utilizator un eveniment se generează. Applet-ul poate fi programat să răspundă la aceste eveniment generat. Tipul de eveniment generat de un buton este numit ActionEvent. Ca applet-ul să răspundă la acest tip de eveniment, o metodă trebuie definită:

public void actionPerformed(ActionEvent evt) { . . . }

Mai mult, butonul trebuie “anunțat” ca applet-ul va “asculta” după orice fel de eveniment creat de buton. Acest lucru se face folosind metoda addActionListener(), ȋn metoda init() a applet-ului.În prima figură este apllet-ul nostru unde este butonul Click Me!, iar în a doua imagine.

Fig. 2.2 Un buton introdus în applet [elaborat de autor]

Butoane obișnuite- obiecte JButton- oferă doar un pic mai multă funcționalitate decât clasa AbstractButton. Puteți face o JButton fie butonul implicit, și dacă utilizați versiunea din dreapta, puteți specifica textul și formatarea etichetei unui buton, folosind HTML.

Cel mult un buton într-un container de nivel superior poate fi butonul implicit. Butonul implicit are de obicei un aspect evidențiat și de acte clic ori de câte ori containerul de nivel superior are focalizarea tastaturii și utilizatorul apasă Return sau tasta Enter. Punerea în aplicare exactă depinde de aspectul.

JCheckBox (în documentația de referință API) de clasă oferă suport pentru butoane caseta de selectare. Puteți pune, de asemenea, casete de selectare în meniuri, folosind JcheckBoxMenuItem (în documentația de referință API) clasa. Deoarece JCheckBox și JCheckBoxMenuItem moștenite de la AbstractButton, casete de selectare Swing au toate caracteristicile buton de obicei, așa cum sa discutat mai devreme în această secțiune. De exemplu, puteți specifica imaginile pentru a fi utilizate în casete de selectare.

Casetele de selectare permite selectarea restrînsă de opțiuni. Mai mult de o opțiune (sau nici unul) pot fi selectate. JCheckBox () este folosit pentru a construi aceste widget-uri. Un widget casetă este în mod normal asociată cu o legendă JLabel, dar poate fi, de asemenea, create prin utilizarea unui constructor cu un parametru legendă. Starea de o casetă de selectare pot fi găsite cu o cazul în care (boxObject.getSelectedObjects ()! = Null) test simplu.

Boxele listă permite afișaj și selecție dintr-un grup de elemente . Ele sunt create cuJList ( object ) constructorul care poate primi o matrice sau un model de listă ca parametru . Casetele listă sunt adesea construite în containere JScrollPane pentru a permite derularea listelor mai mult decât zona de afișare.

Selecție articol poate fi modificat cu setSelectionMode ( selectionMode ) . selectionMode poate fi setat la unul dintre constantele ListSelectionModel:

MULTIPLE_INTERVAL_SELECTION, SINGLE__INTERVAL_SELECTION sau SINGLE_SELECTION . O selecție implicită poate fi setat cu setSelectedIndex ( x ) . Primul element selectat este accesat cu getSelectedValue( ) sau getSelectedIndex( ). Mai multe elemente selectate sunt getSelectedValues ​​accesate( ) sau getSelectedIndices( ) și sunt returnate ca matrice.

Lista de modele oferă metode de gestionare a elementelor unei liste . Clasa DefaultListModel conține DefaultListModel constructor (matrice) și metodele de management, cum ar fi addElement (objName), elementAt {index], removeElement (objName), removeAllElements ( ) și removeElementAt (idx). Metodele de verificare stare includ conține (objName) , indexOf ( nume) și mărimea ( ). Conversie la o serie utilizează copyInto (matrice).

Prezentare Lista poate fi modificat cu setVisibleRowCount ( x ), metoda șifOrientation ( floatValue ) proprietatea . floatValue poate fi setat la VERTICAL , VERTICAL_WRAP sau HORIZONTAL_WRAP .

Casete combinate sunt liste pop-up , care au , de asemenea, un câmp de text pentru a adăuga o selecție. Casete combinate sunt create cu JComboBox( ) constructorul. MyCombo este un exemplu simplu de o casetă combo.

SetEditable Metoda ( adevărat ) face un produs caseta combo editabil . Elementele selectate sunt accesate cu getSelectedItem ( ) și getSelectedIndex ( ) metode. Alte metode utile sunt getItemAt ( idx ), getItemCount ( ), setSelectedItem ( obj ) și setMaximumRowCount ( x ).

Spinners sunt liste care au doar un singur element vizibil la un moment dat. În sus și în jos săgețile deplasa prin listă. Nici o bara de defilare este prevăzut , care reduce spațiul ocupat în interfața. JSpinner ( ) clasa utilizează un câmp JFormattedText de afișare și editare.

De multe ori nu este nevoie de evenimente checkbox ca starea lor sunt verificate atunci când este selectat un buton de proces. Dar sunt momente ați putea dori pentru a actualiza dinamic ca un element casetă este schimbat. Acest lucru necesită o interfață diferit numit ItemListener care răspunde de a schimba de stat, mai degrabă decât clicuri de mouse. Metoda de punere în aplicare necesar este itemStateChanged ().

2.7 Instrucțiunea if, else, else if

Instrucțiunea if cere mașinii virtuale Java să evalueze o expresie (condiție) la o valoare de adevăr. Dacă expresia este adevărată, atunci sunt executate una sau mai multe instrucțiuni aflate în blocul if. Dacă expresia nu este adevărată, instrucțiunile respective sunt omise. Expresia evaluată dintr‐o instrucțiune if se numește expresie condițională.Forma generală:

if (<conditie>)

[<instructiune_adevarat>];

Else această clauză aparține instrucțiunii if și conține una sau mai multe instrucțiuni care sunt executate atunci când expresia condițională din instrucțiunea if este falsă.Forma generală:

if (<conditie>)

[<instructiune_adevarat>];

[else

[<instructiune_fals>];]

Analizind if și else acum le putem combina obținînd o instrucțiune mult mai complexă și aceasta este forma generală de reprezentare:

if (<conditie_1>)

<instructiune_adevarat_1>;

else if (<conditie_2>)

<instructiune_adevarat_2>;

else

<instructiune_fals>;

2.8 Cîmurile și ariile de text

Un punct destul de imprtant este și citirea textelor în awt ce se realizează prin intermediul cîmpurilor text și al ariilor text. Un cîmp conține o singură linie pe cind o arie text conține mai multe linii. Cîmpurile text sunt definite de clasa java.awt.TextField., iar ariile text de către java.awt.TextArea. Cele două sunt derivate din clasa java.awt.TextComponent. Casetă de text este o componentă de simplu și folosită în mod frecvent pentru a intra volum mic (scris într-o singură linie) date de tip text. Pentru a crea un cîmp de text cel mai frecvent utilizate constructori:

JTextField ( int coloane ) – creează o casetă de text gol suficient de larg pentru a se adapta coloanele de caractere . Utilizatorul poate introduce în caseta de text șirul de orice lungime: pur și simplu se va derula .

JTextField (text String ) – creează un cîmp de text cu textul textului inițial .

JTextField (text String, int coloane ) – se poate seta atît lățimea și textul inițial.

Înserarea textului în metoda poate fi utilizată setText ( Text String ). Gettext ( ) returnează conținutul casetei de text în întregime, și getText (int offset, int lungime) – lungimea de o bucată de lungime conținut, începînd cu caracter de offset.

O parte din cîmpul de text pot fi alocate (ca în software-ul și interacțiunea cu utilizatorul). Metoda getSelectedText () vă permite să obțineți o porțiune selectată de text. Înlocuirea textului selectat, se poate utiliza o altă metodă de replaceSelection (conținut String). Metode getSelectionStart() și getSelectionEnd() returnează limitele zonei selectate, și metode setSelectionStart (start int) și setSelectionEnd (final int) pentru a le schimba.

Metoda getCaretPosition() returnează poziția cursorului (caret) în caseta de text, și setCaretPosition metoda ( poziția int ) vă permite să setați programatic. Metoda setCaretColor ( culoare de culoare ), poate schimba culoarea cursorului.

În mod implicit, textul în câmpul este apăsat la stânga. Acest lucru poate fi schimbat prin setHorizontalAlignment (int align), parametrul este una dintre alinierea constante definite în aceeași clasă JTextField: LEFT, CENTER, RIGHT.

JTextArea este, de asemenea un descendent al JTextField și moștenește toate metodele sale. Spre deosebire de zona de cîmp de text de introducere a textului vă permite să introduceți mai mult de o linie. Prin urmare, JTextArea oferă mai multe funcții adiționale. În primul rând, este capacitatea de o folie de cuvînt pe linia următoare de a alege în întregime de către setWrapStyleWord metoda (wrapStyle boolean ). Dacă apelați această metodă cu un parametru true, cuvintele nu se vor rupe în punctul în care " un pas greșit ", la granița de componenta, și va fi transferat în întregime la noua linie. În al doilea rând, este abilitatea de a încadra textul (de exemplu, linii lungi vor fi instalate în cîteva rînduri în loc de unul, care iese din limitele componentei. Această metodă controlează capacitatea setLineWrap ( lineWrap boolean). Metode isWrapStyleWord ( ) și isLineWrap ( ) reveni starea actuală a capacităților de date ( adevărat – activat și fals – dezactivat).

Cînd creați un JTextArea folosit cel mai frecvent JTextArea constructor (int rânduri, int coloane), stabilește înălțimea (numărul de rânduri) și lățimea (numărul de caractere) a componentei.

Pentru a lucra cu conținutul său JTextArea oferă în plus două metode convenabile. Metoda de adaugare (text String ) adaugă un șir de text la sfârșitul unui text existent , și inserția metoda (text String, poziția int) se introduce în poziție poziție.

Fig. 2.3 Arie pentru a introduce textul dorit [elaborat de autor]

2.9 Componenta JcomboBox și JScrollPane

JComboBox – o componentă a Swing Java, care este o lista drop-down. Există două forme JComboBox verticală: editabile și non-editabile. Lista drop-down primul tip vă permite să introduceți valoarea dorită în caseta de text sau selectați din lista interesati, dacă există. Atunci când se lucrează cu un utilizator al doilea tip JComboBox poate selecta doar dintr-o listă drop-down. JComboBox ia forma de mai puțin spațiu în comparație cu alte componente, permite de a alege din mai multe variante. De exemplu, grupul de radio sau lista JList cu 10 elemente ia mult mai mult spațiu decât JcomboBox. Să vedem cum se poate de a crea o listă JComboBox verticală, umple-l cu datele necesare pentru a adăuga la formular, iar apoi utilizatorul selectează un element din listă.

În primul rând, creăm un simplu JComboBox și îl umplem cu date. Acest lucru poate fi realizat după cum urmează:

În primul rînd, se creează un tablou cu elemente pe care dorim să le vedem în viitor lista drop-down, și apoi trece o trimitere la matrice în constructorul JComboBox deja creat.

După cum sa menționat mai sus, există două tipuri de JComboBox – editabile și non-editabile. În mod implicit, casetă combo non-editabile. În scopul de a face editabil, trebuie să apelați cu ajutorul la setEditable(true) ca un parametru.

Lista verticală JComboBox a fost creată. Acum, trebuie să fie capabil de a efectua anumite acțiuni atunci când utilizatorul selectează un element din listă. Acest lucru se poate realiza folosind actionlistener. În primul rînd vom crea ascultatorul – sau clasa anonim, sau un alt exemplu de realizare a ActionListener interfață. Apoi se adaugă un ascultător folosind metoda addActionListener.

ActionListener actionListener = new ActionListener() {

public void actionPerformed(ActionEvent e) {

public void actionPerformed(ActionEvent e) {

/*

* Acțiunea de care avem nevoie

*/}};

comboBox.addActionListener(actionListener);

Pentru componentele de grup împreună le-a pus pe un JPanel – Container , unde puteți seta aspectul, fundal, și granițele. Puteți folosi , de asemenea, un JPanel pentru grafica, dar atunci nu-l utilizați, de asemenea, ca un container component. Există și alte recipiente specializate, care acționează mai mult ca componente, de exemplu, JScrollPane. După ce ați adăugat componente de la un panou, a stabilit panoului de conținut al containerului de nivel superior la acest panou cu myApplet.setContentPane ( conținut ). La toate aceste ComboBox vedem că au și căte un JscrollPane ce ne permite să vedem și mai jos în lista noastră de opțiuni. Componenta JscrollPane poate fi utilizată asupra unei surse de date care poate fi, o imagine, un document text, o tabela etc. Aceasta sursi de date reprezintă componenta din a carei suprafața se va vizualiza doar o anumita regiune la un moment dat, cu posibilitatea de derulare. Pentru aceasta operație JScrooPane pune la dispozitie două bare de derularet JsscrolBar respectiv un container Jviewport care reprezinta zona prim care se vizualizează componenta conținut, care poarta denumirea de privelqte (eng. view) p care poate fi obtinuta printr-un apel getViewport ) $ Pentru a obtine o referință sau pentru a seta această componenta din care doar o portiune este vizualizată la un moment dat, putem folosi metodele getView ) respectiv setview Dad au folosit un constructor adecvat, pentru a adauga a componenta unui JScrolPane folosind un apel de forma:

Fig. 2.4 JcomboBox cu JscrolPane [elaborat de autor]

2.10 Componenta JcolorChooser

Alegerea culorii reprezentată de clasa JColorChooser, sunt componente care permit o culoare să fie selectată. Selectorul de culoare este compus din două zone distincte: un set de panouri Chooser culori afișate într-o pane12 tab-uri și un panou de previzualizare care comunică vizual culoarea selectată. Ambele zone pot fi personalizate prin înlocuirea panourilor implicite.

Ca fișier choosers și ferestrele opțiune, alegerea culoarii sunt de obicei afișate într-un dialog, dar din moment ce alegerea culorii sunt componente, acestea pot fi incluse în orice AWT sau container Swing.

În mod implicit alegerea culoarii vine cu trei panouri care permit de a alege culoarea pentru a fi selectate: Swatches, HSB, RGB și CMYK. Oricare dintre panourile implicite pot fi eliminate, iar panourile personalizate pot fi adăugate.

Alegerea culoarii în selectorul de culoare este comunicată printr-un panou de previzualizare. Panoul de previzualizare implicit poate fi înlocuit cu o versiune personalizată. JColorChooser oferă două metode statice: createDialog () și showDialog (), care creează dialoguri care permit și conțin alegerea culorii. Forma creează și returnează un dialog care conține selectorul de culoare este trecut; acesta din urmă creează atât selectorul de culoare și de dialog și arată dialogul. Ambele dialoguri sunt modale. Applet-ul prezentat în figura 2.8 creează un selectorul de culoare cu JColorChooser nu-argument constructor, iar selectorul este adăugat la panoul de conținut al applet-ului.

Alegerea de culoare are un model de selecție, care este o implementare a interfeței swing.colorchooser.ColorSelectionModel. Applet-ul prezentat în figura 2.8 adaugă un ascultător schimbare a modelului de selecție selectorul de culoare pentru a determina dacă o culoare a fost selectat. Ascultatorul raspunde la selecțiile prin actualizarea zona de statutul de applet-ului.

Fig. 2.5 Panoul ColorChooser [elaborat de autor]

Alegerea culorii poate fi afișată într-un dialog într-unul din două moduri. Metoda statică JColorChooser.showDialog creează un selectorul de culoare, care este plasat într-un dialog nou creat de fiecare dată metoda este invocată.

Metoda JColorChooser.createDialog este trecut în selectorul de culoare existent, care este de asemenea plasat într-un dialog nou creată de fiecare dată metoda este invocată. Panoul prezentat în figura 2.8 conține o grilă de obiecte ColorPatch care sunt conținute într-o paletă; atât ColorPatch și paleta clase sunt puse în aplicare de către applet.

2.11 Utilizarea componentei JLabel

JLabel este, probabil, componenta cea mai simpla care are un Swing Java. Folosind JLabel poate afișa text într-o pictogramă. Dacă orice componentă a avut nevoie pentru a afișa un mesaj sau de a face o pictogramă de introducere a textului eticheta de câmp sau spectacol – folosi JLabel. Textul care îl arată JLabel nu poate fi selectat, el poate fi doar privit.

Pentru cerare obiectului Jlabel, care peurmă va fi pus într-o fereastră, poate fi folosit cu constructorul public Jlable(String text). Parametru este text, care va fi afișat în Jlable. JLabel vă permite să personalizați fontul care va fi folosit pentru a afișa text. Setarea de font se face de către JLabel metoda setfont. Această metodă ca un parametru transferat Font. Ceea ce ne dorim , atunci când vom specifica sau crea fontul ? Primul – marca , Verdana sau Courier New , sau ambele . Cea de a doua – a treia și dimensiunea fontului – fontul este bold sau normal , sau pot fi cursiv . Prin urmare , constructorul adecvat pentru Font este unul care conține toate cele trei parametri la o dată – Font publice ( String nume , stil int , int size ). Primul parametru, așa cum este deja clar că numele fontului. Dacă nu este specificat, este folosit fontul implicit . Al doilea parametru stabilește stilul – bold , italic sau normal . Aici trebuie să treacă una dintre constantele obiect Font – Font.BOLD ( bold ) , Font.PLAIN ( normale sau plate ) și Font.ITALIC ( sublinierea ) . Și a treia opțiune – dimensiunea fontului . Obiect font poate fi creat ca în eemplu următor: Font font = new Font("Verdana", Font.PLAIN, 11);

După instalarea fontului și textul în JLabel uneori este necesar pentru a determina alinierea textului pe verticală și pe orizontală . Acest lucru se face cu ajutorul a două metode și setVerticalAlignment setHorizontalAlignment respectiv . Ca parametri pentru setVerticalAlignment trebui să folosească ceva din urmatoarea lista : JLabel.TOP ( aliniate în partea de sus ) , JLabel.CENTER ( centru ) și JLabel.BOTTOM ( aliniazămarginea de jos ) . Pentru mai multe parametrilor metodei setHorizontalAlignment – JLabel.LEFT ( marginea din stânga ) , JLabel.CENTER ( în mijloc ) , JLabel.RIGHT ( dreapta – justificate ) , JLabel.LEADING și JLabel.TRAILING. Pentru limbile care scriu merge de la stânga la JLabel.LEADING textului de la dreapta – aceasta este marginea din stânga , și JLabel.TRAILING – dreapta . Pentru limbi al căror scris de la dreapta la stânga , JLabel.LEADING – aceasta este marginea din dreapta , și JLabel.TRAILING – stânga .

JLabel poate afișa o pictogramă, împreună cu textul. Pentru a instala pictogramele folosim metoda setIcon. Singurul parametru de metoda este Icon. Atunci când se administrează o pictogramă pentru JLabel, puteți specifica locația de text în raport cu icoana. În acest scop, metode și setVerticalTextPosition setHorizontalTextPosition. Parametrii utilizați sunt aceleași ca constantele alinierea textului.

Font am ales . Acum, avem nevoie pentru a determina ce culoare textul este JLabel nostru . Acest lucru se face cu ajutorul setForeground metoda. Aici aveți nevoie pentru a trece la Color. Pentru a crea o culoare poate utiliza diferite designeri sau locul folosi constantele definite în Color obiect . Există o Color.BLACK negru , Color.GREEN verde , roșu Color.RED și altele . Dacă doriți să creați un fel de o anumită culoare, trebuie să utilizați proiectantul . Pentru mine , Culoare publică mai convenabil (int red , int verde, int albastru ). Trece culorile componente necesare aici și de a lua ceea ce au vrut . Ei bine, apoi setați culoarea în JLabel.Exemplu: label.setForeground(Color.GREEN);

2.12 Citirea și scriere unui obiect întrun fișier

Într‐un program real, multe din elementele de date pe care vreți să le stocați într‐un fișier sunt date membre ale unei clase. Multe atribute ale unei clase sunt stocate în variabile de instanță. O variabilă de instanțăn reprezintă o locație de memorie folosită pentru stocarea datelor specifice unei instanțe a clasei.

Să presupunem că în definiția clasei sunt definite două variabile de instanță și sunt create cinci obiecte ale clasei. Java rezervă cinci seturi de variabile de instanță, independente unul față de celălalt. Totuși, fiecare dintre cele cinci obiecte folosește același set de metode – cele asociate clasei.

Atunci când se dorește păstrarea instanței unei clase, aceasta se salvează într‐un fișier. Când seface acest lucru, în fișier sunt salvate numai variabilele de instanță, nu și metodele clasei.

Etapele scrierii și citirii unui obiect în/din fișier.

trebuie implementată interfața Serializable în clasa a cărei obiecte urmează să-l scrieți în fișier. Interfața Serializable permite ca instanțele clasei respective să fi transformate într‐un flux de octeți care poate fi scris pe disc sau trimis pe rețea. Această operație se numește serializare. La citirea obiectului, fluxul de octeți este deserializat și este reconstituită instanța clasei.

crearea unei instanțe a clasei și atribuirea valorii variabilelor de instanță. Apoi se deschide fișierul apelând constructorul clasei FileOutputStream, căruia i se transmite numele fișierului. Operatorul new returnează o referință a unui obiect FileOutputStream. Această referință este transmisă constructorului clasei ObjectOutputStream, care definește metodele folosite pentru scrierea unui obiect într‐un fișier.

după crearea unei instanțe ObjectOutputStream se scrie un obiect în fișier. Pentru acest lucru se apelează metoda writeObject() și se transmite o referință a obiectului dorit a fi scris în fișier. Variabilele statice ale obiectului nu sunt salvate. Ultimul pas constă în apelarea metodei close(), pentru a închide fișierul.

Citirea unui obiect dintr‐un fișier este la fel de simplă ca și scrierea unui obiect într‐un fișier. Totuși, în locul clasei ObjectOutputStream se folosește clasa ObjectInputStream, iar în locul clasei FileOutputStream se folosește clasa FileInputStream. Se citește un obiect din fișier apelând metoda readObject(), definită în clasa ObjectInputStream. Metoda readObject() returnează o referință de tip Object. Această referință trebuie convertită la tipul specific al clasei obiectului citit. Obiectul returnat de metoda readObject() este apoi atribuit unei referințe a obiectului respectiv și este folosit ca orice alt obiect din program.

2.13 Concluzii la capitolul 2

În acest capiltol am debutat cu prezentarea limbajului de programare java cu aspectele sale pozitive și negative, apoi am analizat applet-uril și seuritatea lor, modul de funcționare, utilizarea componentelor și al containerelor, crearea de ferestre prin utilizarea bibliotecii AWT.

Am analizat modul de utilizare a componetelor pentru a automatiza sistemul cu ajutorul bibliotecii Swing care pune la dispoziții biblioteca pentru o realizare comodă a interfeței grafice. Este o pachet de clase care permite mai puternice și flexibile componente ca al bibliotecii AWT. Am prezentat exemple și imagini pentru a vedea care va fi posibilul rezultat al utilizării componentelor Java.

Deasemenea au fost descrise 2 pachete destul importante ale limbajului de programare Java , acestea sunt java.io și java.applet. Sunt descrise cele mai importante proncipii de creare al unui applet Java. Applet-ul poate fi introdus pe o pagină web, pentru aceasta HTML conține tag-ul < applet > în interiorul lui putem introduce width și height care exprimă marimea ferestrei applet.

3. DESCRIEREA SISTEMULUI

. Ghid Utilizator

Programul nostru are ca scop final să fie dat spre utilizare de către persoanele care nu activează în domeniu. Pentru aceasta am elaborat un program cît se poate de simplu de utilizat, în limba engleză pentru utilizatorii din toată lumea. Astfel pentru a realiza o publicitate evem nevoie să introducem în spatiile libere width(lățimea) 600 și height(înălțimea) 150 pe carea o dorim s-o aibă publicitatea, apoi pentru text for fi selectate Family( familia fontului) Arial Black, Style (stilul) Bold, Size(mărimea), Color (culoare), x vom atribui valoarea 56 și lui y 71 , ele indică din ce punct să înceapă textul. La următorul pas vom atribui valori pentru Grad x1 300, Grad x2 10 precum si Grad color 1vom selecta culoarea dorită apoi facem acelaș lucru pentru Grad y1 300, Grad y2 și Grad color 2 vom selecta culoarea dorită , la aceasta etatpă noi alege culorile pentru fundal precum și le atribuim suprafața cu Grad x1 ți Grad y1, precum și înclinația cu Grad x2 și Grad y2. Pasul trei constă în alegem Grad Cycle (ciclu) să fie true (adevărat), Introducm trxtul în aria Text și bifăm Gradient. Publicitatea este gata dar nu se vizualizază pentru asta apăsăm Generate pentru a fi afișată. Butoanele Save(salvează), Open (deschide), Clear (șterge), Register(înregistrează) sunt adiționale pentru a permite utilizarea sa în linii mai largi. Mai jos în figura 3.1 este prezentat sistemul precum și rezultatul pașilor care sunt expuși mai sus. Acest program este simplu și ușor de utilizat, nu va crea probleme pentru cei care vor dori să-l exploreze .

Fig. 3.1 Publicitate realizată cu jutorul programului [elaborat de autor]

Ghid Programator

Crearea și rularea programelor Java cu ajutorul platformei Eclipse

Eclipse este o platformă multi‐scop pentru dezvoltarea de software, scrisă, în mare parte, în limbajul Java, astfel putând rula pe orice sistem de operare actual. Oferă un mediu integrat de dezvoltare (IDE – Integrated Development Environment) pentru diverse limbaje de programare (Java, C/C++, PHP, Python, Perl, Cobol). Baza codului sursă provine din platforma VisualAge dezvoltată de IBM, astfel se explică suportul primit din partea acestei companii. Platforma Eclipse se încadrează în categoria programelor gratuite și open source. Printre facilitățile platformei Eclipse merită a fi menționate:

crearea și gestiunea de proiecte;

debuging;

completarea automată a codului (code completion);

automatizări pentru operații des utilizate (redenumire, creare de set‐ere și get‐ere,

completarea automată a secțiunii de import).

Toate programele Java prezentate în continuare sunt dezvoltate folosind platforma Eclipse Ganymede și JDK 6 și rulează pe JRE 6. Versiunile platformei Eclipse, începând cu versiunea 3.2, sunt denumite după sateliții naturali și artificiali ai planetei Jupiter (Callisto, Europa, Ganymede).

3.2.1. Interfața de lucru a platformei Eclipse

La pornirea mediului Eclipse este cerută calea unui director care va fi spațiul de lucru al platformei. Aici se vor salva proiectele și vor fi stocate datele necesare rulării proiectelor.

Fig. 3.2 Selecția spațiului de lucru [elaborat de autor]

Dacă se utilizează același spațiu de lucru pentru toate proiectele, se poate bifa căsuța de validare Use this as the default and do not ask again, pentru a elimina această întrebare la fiecare pornire a platformei. Ferestrele vizibile din interfața Eclipse sunt grupate logic în perspective. O perspectivă indică numărul de ferestre vizibile, poziția lor și opțiunile vizibile în aceste ferestre, în funcție de limbajul utilizat în proiectul deschis. În capturile de ecran prezentate în acest îndrumar se va folosi perspectiva Java. Perspectiva curentă se poate schimba de labutoanele dedicate situate în partea dreaptă‐sus a workbench‐ului Eclipse.

3.2.2 Crearea unui proiect Java

Din meniul File→New se alege opțiunea Java Project.

Fig. 3.3 Crearea unui proiect Java în Eclipse [elaborat de autor]

În fereastra care se deschide trebuie specificat numele proiectului. Este indicat să fie selectată

opțiunea Create separate folders for sources and class files din secțiunea Project layout, pentru a nu amesteca fișierele ce conțin codul sursă cu cele ce conțin codul de octeți, executabil. Pentru un proiect complet nou este bine să se aleagă opțiunea Create new project in workspace a secțiunii Contents. Apăsarea butonului Next va determina accederea la mai multe opțiuni, cum ar fi importul unor librării suplimentare, modificarea directoarelor unde vor fi salvate sursele și codul de octeți al proiectului, etc. Crearea și deschiderea în workbench a noului proiect se realizează prin apăsarea butonului Finish.

3.2.3 Crearea pachetelor

Clasele unui proiect Java sunt grupate, de regulă, în pachete. Criteriile de grupare țin de

funcțiile pe care le îndeplinesc acele clase în proiect (lucrul cu fișiere, accesul la baze de date, comunicația prin rețea, etc.). De asemenea, pachetele asigură și controlul numelor și al vizibilității. Fizic un pachet este un director al proiectului.

Accesul la clasele dintr‐un pachet se face prin utilizarea instrucțiunii import la începutul

codului sursă. Instrucțiunea import trebuie să conțină numele pachetelor și ale claselor care vor fi folosite în codul sursă. Crearea unui pachet în Eclipse se realizează prin clic dreapta pe numele proiectului, iar din meniul care apare se alege New→Package. În fereastra ce se deschide se specifică numele noului pachetului, după care se apasă butonul Finish.

Fig. 3.4. Creare pachetului program principal [elaborat de autor]

Un pachet poate conține alte pachete, care, la rândul lor, pot conține alte pachete. În cazul acesta se efectuează clic pe numele pachetului în care se face adăugarea, după care se parcurge aceleași etape prezentate mai sus.

3.2.4 Crearea claselor

Clasele aparțin pachetelor, prin urmare adăugarea se va face prin clic dreapta pe numele pachetului; se selectează New→Class. În fereastra care se deschide se completează numele clasei și se selectează opțiunile pentru aceasta.

Fig. 3.5 Crearea unei clase [elaborat de autor]

Dacă se dorește ca clasa creată să conțină metoda main(), atunci se bifează opțiunea public static void main(String[] args) din secțiunea Which method stubs would you like to create?. Se recomandă ca modificatorul de acces al claselor să fie cel public (secțiunea Modifiers).

Se recomandă respectarea următoarei convenții de notare: numele claselor încep întotdeauna cu literă mare. Dacă numele conține mai mulți atomi lexicali (cuvinte), fiecare dintre ei încep cu literă mare. După apăsarea butonului Finish, este deschis automat fișierul ce conține declarația noii clase, așa cum se vede .

Pentru afișarea mesajului “Hello World din Java!” se folosește instrucțiunea: System.out.println(“Hello World din Java!”);

Această instrucțiune trebuie plasată în interiorul metodei main() (care este echivalentul programului principal: execuția programului începe cu această metodă).Deoarece instrucțiunea System.out.println() este foarte uzitată, editorul platformei Eclipse oferă o scurtătură pentru scrierea ei. Tastarea textului syso, urmat de combinația de taste CTRL+Space determină introducerea instrucțiuniin System.out.println(). Lansarea în execuție a programului se poate face din meniul Run→Run, prin combinația de taste CTRL+F11 sau prin apăsarea butonului din bara de instrumente. Înainte de lansarea în execuție a unui program este recomandabil să salvați fișierele pe care le‐ați modificat. Oricum, mediul Eclipse vă va cere permisiunea de a salva aceste fișiere înainte de lansarea în execuție.

Concluzii capitolul 3

Acest capitol sunt oferite doua ghiduri dedicate utilizatorilor și programatorilor pentru a facilita utilizarea de către diferite persoane cu diferite scopuri, fie ele de a elimina lacunele sau de implimenta o ideie nouă în acest sistem, fie de a crea o publicitate pentru a fi postată pe o pagină web spre vederea vizitatorilor.

În prima parte a acestui capitol am reprezentat ghidul destinat pentru utilizatori. Ce cuprinde informații despre fieacare componetă al acestui sistem, tradusă în limba romană. Tot în această parte al capitolului am oferit un exemplu de creare al unui applet pentru a fi mai bine înțeleasă modalitatea de utilizare al sistemului.

În partea doua al capitolului am prezentat ghidul destinat programatorilor în caz că apar noi idei, pentru a fi posibile de a fi implimentate. Au fost definite și prezentate exemple de crearea aunui proiect nou în java , precum și introducerea pachetelor și claselor dacă apare necesitatea.

A fost oferit și un exemplu în care se observă ca putem deodată să vizualizăm rezultatul făra a ieși din sistemTestarea sistemului online este un proces important ce ne poate ilucida unele lacune grave în sistem pentru aceasta administratorul trebuie să fie informat și atent să facă modificări.

CONCLUZII GENERALE ȘI RECOMANDĂRI

În zilele noastre prezența unei firme pe internet a devenit o chestiune la ordinea zilei, pentru unele din ele fiind chiar o necesitate. Costurile relativ mici și in continua scadere au permis chiar și firmelor mici sa aiba site-ul propriu.

Dupa realizarea site-ului, in care firma se prezinta și iși descrie oferta de produse și servicii, apare imediat nevoia de a le face publice. Astfel, marketingul a fost rapid extins și adaptat chestiunilor specifice sectorului internet.

Trebuie menționat că toate acestea au fost posibile datorita extinderii internetului. Totodată a crescut spectaculos și numarul de calculatoare conectate la internet. În aceste condiții lumea virtuală a internetului a devenit o realitate ce tinde chiar să se substituie metodelor clasice de a afla informatii, de a comunică, de a vinde/cumpară, etc.

In acest sens, aplicația dezvoltata constituie o soluție modernă și viabilă pentru implementarea unei publicitați în lumea virtuală, ce are ca obiectiv informarea despre produsele și serviciile oferite.

În fine am ajuns spre sfârșitul proiectului meu pe care l-am realizat timp de jumătate de simestru, așa că vreu să trec încă odată prin pașii de elaborare a unui web-curs.

Am făcut o analiză am consultat multe cărți și surse pentru a demonstra și a înțelege pentru a întelege de ce este nevoie un generator de appleturi în java. Acesta a demonstrat ca java este incorporat aproximativ în toate browser-ele moderne. Realizarea unui genertor de publicități este necesar și chiar indispensabil pentru a creea rapid o publicitate atrăgătoare. Rezultatul poate fi folosit pentru paginile web în domeniu informativ.

Cu ajutorului platformei Eclipse Juno Sdk a fost posibilă crearea proiectului. Deasemenea limbajul Java ne-a uimit cu multime de posibilități de a tinge țelul dorit, în ultimul rînd să nu uităm de oferirea unui rezultat placut și atrăgător la vedere.

A fost testat sistemul utilizînd așa metode de testare precum testarea generală, testarea interfeței grafice, testarea securității și testarea compatibilității, ceea ce a permis ridicarea calității sistemului.

În zilele noastre viteza este succesul , distanța nu are limite, internetul este cel ce unește și el este tot cel ce ne informează, acest sistem va ajuta la raspindirea informației.

BIBLIOGRAFIE

Adamiu I., Brut V. Java de la 0 la expert . Iași: Polirom, 2007.380p.

Arnold Ken, James Gosling, David Holmes. The Java™ Programming Language, Fourth Edition. Boston: Addison-Wesley , 2005. 320p.

Beck, Kent. Extreme Programming Explained: Embrace Change. Boston: Addison-Wesley, 1999. 2803p.

Bloch, Joshua. Effective Java™ Programming Language Guide. Boston: Addison-Wesley, 2001. 420p.

Bloch, Joshua, and Neal Gafter. Java™ Puzzlers: Traps, Pitfalls, and Corner Cases. Boston: Addison-Wesley, 2005. 220p.

Bloch, Joshua. Collections. In The Java™ Tutorial: A Short Course on the Basics, Fourth Edition. Boston: Addison-Wesley, 2006. 386p.

Bracha, Gilad. Generics in the Java Programming Language. Boston: Addison-Wesley, 2004. 658p.

Cristea V. ș.a. Sisteme inteligente de instruire pe Web. Bucuresti: Editura Politehnica Press, 2005. 452p.

Finke A. ș.a. E-learning System Content and Arhitecture Evolution. Riga:Gold, 2010. 339p.

Chun Russell. Java expert . USA: Adobe Press, 2010. 385p.

Ioniță A. Effective java 1. București:Polirom 2002. 250p.

Ioniță A. Effective java for programing. București:Polirom 2005. 323p.

Goetz Brian, Tim Peierls . Java Concurrency in Practice. Boston: Addison-Wesley, 2006. 535p.

Gong Li, Gary Ellison, Mary Dageforde. Inside Java™ 2 Platform Security, Second Edition. Boston: Addison-Wesley, 2003. 468p.

Gosling James, Bill Joy, and Guy Steele, and Gilad Bracha. The Java™ Language Specification, Third Edition. Boston: Addison-Wesley, 2005.433p.

Langer, Angelika. Java Generics FAQs — Frequently Asked Questions. London:Book, 2008. 139p.

Lea, Doug. Concurrent Programming in Java™: Design Principles and Patterns, Second Edition. Boston: Addison-Wesley, 2000. 254p.

Naftalin Maurice, Philip Wadler. Java Generics and Collections. Sebastopol:O’Reilly Media, 2007. 330p.

Nica I., Brut V. Java pentru experți . Iași: Polirom, 2004.390p.

Reinhardt Robert.Online strategies . California: Press, 2009. 400p.

Rice William. Moodle 1.9 E-Learning Course Development. Alabama: Packt Publishing, 2008. 384p.

Rosca I. ș.a. Publicitatea online, RevistaInformatica Economica, nr. 2 . București, 2002. 17p.

Morvan P. ș.a. Dicționar de Informatică. Traducere. București: Editura Niculescu, 2005. 340p.

Smith P. ș.a. Instructional Design. New York: John Wilez & Sons, 2005. 197p.

Vlada M. Java pentru începători . București: Editura Universității din Bucuresti, 2003. 489p.

ANEXA 1. Listingul programului.

Codul sursă a programului

import java.io.*;

import java.awt.*;

import java.awt.event.*;

import java.awt.image.*;

import java.awt.font.*;

import javax.swing.JApplet;

import java.text.*;

import javax.swing.*;

import javax.swing.text.JTextComponent;

import javax.imageio.*;

import org.xml.sax.*;

import org.xml.sax.helpers.*;

final

public class applet

extends JPanel

implements ActionListener

{private JComboBox fmBox;

private JComboBox szBox;

static private JComboBox stlBox;

private JButton clButton;

private JTextField gradX_1_Field;

private JTextField gradY_1_Field;

private JTextField gradX_2_Field;

private JTextField gradY_2_Field;

private JTextField xField;

private JTextField yField;

private JTextField wField;

private JTextField hField;

private JComboBox cycleBox;

private JCheckBox isRenderCB;

private JCheckBox selectedCB;

private JTextField textField;

private static final JFileChooser jfc = new JFileChooser ();

private Color fontColor = Color.black;

private JButton gradColor_1_Button;

private JButton gradColor_2_Button;

private Color gradColor_1 = null;

private Color gradColor_2 = null;

private JPanel bot;

private BufferedImage bimg;

private JComponent [] components;

private int componentsLength = 0;

private XMLReader xmlreader;

private ContentHandler handler = null;

private applet ()

{super (new BorderLayout ());

jfc.addChoosableFileFilter (new javax.swing.filechooser.FileFilter ()

{public boolean accept (File f)

{if (f.isDirectory ()) return true;

String name = (f.getName ()).toLowerCase ();

if (name.endsWith (".xml"))

{return true;

}

return false;

} public String getDescription ()

{return "xml files";

}

});

jfc.addChoosableFileFilter (new javax.swing.filechooser.FileFilter ()

{ public boolean accept (File f)

{if (f.isDirectory ()) return true;

String name = (f.getName ()).toLowerCase ();

if (name.endsWith (".jpg") || name.endsWith (".jpeg")

|| name.endsWith (".gif") || name.endsWith (".png"))

{ return true;

}

return false;

}

public String getDescription ()

{return "jpg, gif, png files";

}

});

jfc.setAcceptAllFileFilterUsed (false);

jfc.setCurrentDirectory (new File ("images"));

JPanel top = new JPanel (new GridLayout (10, 4, 2, 2));

bot = new XPanel ();

JSplitPane pane = new JSplitPane (JSplitPane.VERTICAL_SPLIT,

top, new JScrollPane (bot));

pane.setOneTouchExpandable (true);

JLabel wLabel = getLabel ("width:");

top.add (wLabel);

wField = getField ("");

top.add (wField);

JLabel hLabel = getLabel ("height:");

top.add (hLabel);

hField = getField ("");

top.add (hField);

JLabel fmLabel = getLabel ("Family:");

top.add (fmLabel);

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment ();

String [] fnames = ge.getAvailableFontFamilyNames ();

fmBox = getComboBox (fnames);

top.add (fmBox);

JLabel szLabel = getLabel ("Size:");

top.add (szLabel);

String [] szs = new String [33];

for (int i=0; i<=32; i++)

{ szs [i] = Integer.toString (i+8);

}

szBox = getComboBox (szs);

top.add (szBox);

JLabel stLabel = getLabel ("Style:");

top.add (stLabel);

String styles [] = new String []

{"Plain", "Bold", "Italic", "Bold+Italic"

};

stlBox = getComboBox (styles);

top.add (stlBox);

JLabel clLabel = getLabel ("Color:");

top.add (clLabel);

clButton = getButton ();

clButton.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt)

{ Color c = JColorChooser.showDialog (clButton, "Font color", Color.black);

if (c != null)

{fontColor = c;

clButton.setBackground (fontColor);

return;

}

else

{ fontColor = Color.black;

clButton.setBackground (fontColor);

return;

}

}

});

top.add (clButton);

JLabel xLabel = getLabel ("x:");

top.add (xLabel);

xField = getField ("");

top.add (xField);

JLabel yLabel = getLabel ("y:");

top.add (yLabel);

yField = getField ("");

top.add (yField);

JLabel gradX_1_Label = getLabel ("Grad x1:");

top.add (gradX_1_Label);

gradX_1_Field = getField ("");

top.add (gradX_1_Field);

JLabel gradY_1_Label = getLabel ("Grad y1:");

top.add (gradY_1_Label);

gradY_1_Field = getField ("");

top.add (gradY_1_Field);

JLabel gradX_2_Label = getLabel ("Grad x2:");

top.add (gradX_2_Label);

gradX_2_Field = getField ("");

top.add (gradX_2_Field);

JLabel gradY_2_Label = getLabel ("Grad y2:");

top.add (gradY_2_Label);

gradY_2_Field = getField ("");

top.add (gradY_2_Field);

JLabel gradColor_1_Label = getLabel ("Grad Color 1:");

top.add (gradColor_1_Label);

gradColor_1_Button = getButton ();

gradColor_1_Button.addActionListener (new ActionListener ()

{public void actionPerformed (ActionEvent evt)

{ Color c = JColorChooser.showDialog (clButton, "Font color", Color.white);

if (c != null)

{ gradColor_1 = c;

gradColor_1_Button.setBackground (gradColor_1);

return;

}

else

{ gradColor_1 = Color.white;

gradColor_1_Button.setBackground (gradColor_1);

return;

}

}

});

top.add (gradColor_1_Button);

JLabel gradColor_2_Label = getLabel ("Grad Color 2:");

top.add (gradColor_2_Label);

gradColor_2_Button = getButton ();

gradColor_2_Button.addActionListener (new ActionListener ()

{public void actionPerformed (ActionEvent evt)

{ Color c = JColorChooser.showDialog (clButton, "Font color", Color.white);

if (c != null)

{ gradColor_2 = c;

gradColor_2_Button.setBackground (gradColor_2);

return;

}else

{ gradColor_2 = Color.white;

gradColor_2_Button.setBackground (gradColor_2);

return; }

}

});

top.add (gradColor_2_Button);

JLabel gradCycleLabel = getLabel ("Grad Cycle:");

top.add (gradCycleLabel);

cycleBox = getComboBox (new String []{"true", "false"});

top.add (cycleBox);

isRenderCB = getCheckBox ("Use Render:");

top.add (isRenderCB);

selectedCB = getCheckBox ("Gradient: ");

top.add (selectedCB);

JLabel textLabel = getLabel ("Text:");

top.add (textLabel);

textField = getField ("");

top.add (textField);

JButton saveButton = getButton ();

saveButton.setText ("Save");

saveButton.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt)

{ Thread t = new Thread ()

{ public void run ()

{ saveIt ();

}

};

t.start ();}

});

top.add (saveButton);

JButton regButton = getButton ();

regButton.setText ("Register");

regButton.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt)

{ Thread t = new Thread ()

{ public void run ()

{ regIt ();

}};

t.start ();

}});

top.add (regButton);

JButton generateButton = getButton ();

generateButton.setText ("Generate");

generateButton.addActionListener (this);

top.add (generateButton);

JButton openButton = getButton ();

openButton.setText ("Open");

openButton.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt)

{Thread t = new Thread ()

{ public void run ()

{ int r = jfc.showOpenDialog (stlBox);

if (r != JFileChooser.APPROVE_OPTION) return;

File f = jfc.getSelectedFile ();

BufferedImage bi = null;

try

{ bi = ImageIO.read (f);

}

catch (Exception e)

{ return;

}

if (bi != null)

{ bimg = bi;

bot.repaint ();

}

}

};

t.start ();

}

});

top.add (openButton);

JButton resetButton = getButton ();

resetButton.setText ("Clear");

resetButton.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt)

{bimg = null;

bot.repaint ();

}

});

top.add (resetButton);

add ("Center", pane);

components = new JComponent []

{ fmBox, szBox, stlBox, clButton,

gradX_1_Field, gradY_1_Field,

gradX_2_Field, gradY_2_Field,

gradColor_1_Button, gradColor_2_Button,

xField, yField, wField, hField,

cycleBox, isRenderCB, selectedCB,

textField

};

componentsLength= components.length;

setNames ();

try

{ handler = new MyContentHandler (components, componentsLength);

xmlreader = XMLReaderFactory.createXMLReader ();

xmlreader.setContentHandler (handler);

}

catch (Exception e)

{ xmlreader = null;

}

}

private final void setNames ()

{wField.setName ("Banner_Width");

hField.setName ("Banner_Height");

textField.setName ("Banner_Text");

xField.setName ("Banner_Text_X");

yField.setName ("Banner_Text_Y");

fmBox.setName ("Font_Family");

szBox.setName ("Font_Size");

stlBox.setName ("Font_Style");

clButton.setName ("Font_Color");

isRenderCB.setName ("Is_Rendering");

selectedCB.setName ("Is_Gradient");

cycleBox.setName ("Gradient_Is_Cycle");

gradX_1_Field.setName ("Gradient_X_1");

gradY_1_Field.setName ("Gradient_Y_1");

gradColor_1_Button.setName ("Gradient_Color_1");

gradX_2_Field.setName ("Gradient_X_2");

gradY_2_Field.setName ("Gradient_Y_2");

gradColor_2_Button.setName ("Gradient_Color_2");

};

private int fnum = 0;

private final void regIt ()

{try

{ File fd = new File ("images/xml");

if (fd.exists () && fd.isFile ())

{ JOptionPane.showMessageDialog (stlBox, "There is not images/xml folder. Produce it before");

return;

};

if (fd.exists () == false) fd.mkdir ();

jfc.setCurrentDirectory (fd);

int rep = jfc.showSaveDialog (stlBox);

if (rep != JFileChooser.APPROVE_OPTION) return;

File dest = jfc.getSelectedFile ();

String CRLF = "\r\n";

StringBuffer sb = new StringBuffer ();

String fname = (String)(fmBox.getSelectedItem ());

int style = stlBox.getSelectedIndex ();

int size = Integer.parseInt ((String)(szBox.getSelectedItem ()));

Color cf = fontColor;

sb.append ("\t\t<Font_Family>");

sb.append (fname);

sb.append ("</Font_Family>");

sb.append (CRLF);

sb.append ("\t\t<Font_Size>");

sb.append (Integer.toString (size));

sb.append ("</Font_Size>");

sb.append (CRLF);

sb.append ("\t\t<Font_Style>");

sb.append (Integer.toString (style));

sb.append ("</Font_Style>");

sb.append (CRLF);

sb.append ("\t\t<Font_Color>");

sb.append (Integer.toString (cf.getRGB ()));

sb.append ("</Font_Color>");

sb.append (CRLF);

String banw = wField.getText ();

String banh = hField.getText ();

sb.append ("\t\t<Banner_Width>");

sb.append (banw);

sb.append ("</Banner_Width>");

sb.append (CRLF);

sb.append ("\t\t<Banner_Height>");

sb.append (banh);

sb.append ("</Banner_Height>");

sb.append (CRLF);

String text = textField.getText ();

sb.append ("\t\t<Banner_Text>");

sb.append (text);

sb.append ("</Banner_Text>");

sb.append (CRLF);

String tx = xField.getText ();

String ty = yField.getText ();

sb.append ("\t\t<Banner_Text_X>");

sb.append (tx);

sb.append ("</Banner_Text_X>");

sb.append (CRLF);

sb.append ("\t\t<Banner_Text_Y>");

sb.append (ty);

sb.append ("</Banner_Text_Y>");

sb.append (CRLF);

String render = (isRenderCB.isSelected ()?"true":"false");

sb.append ("\t\t<Is_Rendering>");

sb.append (render);

sb.append ("</Is_Rendering>");

sb.append (CRLF);

String gradient = (selectedCB.isSelected ()?"true":"false");

if (gradient.equals ("true"))

{ sb.append ("\t\t<Is_Gradient>");

sb.append (gradient);

sb.append ("</Is_Gradient>");

sb.append (CRLF);

String cyc = (String)cycleBox.getSelectedItem ();

sb.append ("\t\t<Gradient_Is_Cycle>");

sb.append (cyc);

sb.append ("</Gradient_Is_Cycle>");

sb.append (CRLF);

String gx1 = gradX_1_Field.getText ();

sb.append ("\t\t<Gradient_X_1>");

sb.append (gx1);

sb.append ("</Gradient_X_1>");

sb.append (CRLF);

String gy1 = gradY_1_Field.getText ();

sb.append ("\t\t<Gradient_Y_1>");

sb.append (gy1);

sb.append ("</Gradient_Y_1>");

sb.append (CRLF);

String gc1 = Integer.toString (gradColor_1.getRGB ());

sb.append ("\t\t<Gradient_Color_1>");

sb.append (gc1);

sb.append ("</Gradient_Color_1>");

sb.append (CRLF);

String gx2 = gradX_2_Field.getText ();

sb.append ("\t\t<Gradient_X_2>");

sb.append (gx2);

sb.append ("</Gradient_X_2>");

sb.append (CRLF);

String gy2 = gradY_2_Field.getText ();

sb.append ("\t\t<Gradient_Y_2>");

sb.append (gy2);

sb.append ("</Gradient_Y_2>");

sb.append (CRLF);

String gc2 = Integer.toString (gradColor_2.getRGB ());

sb.append ("\t\t<Gradient_Color_2>");

sb.append (gc2);

sb.append ("</Gradient_Color_2>");

sb.append (CRLF);

}

sb.append ("\t</Data>");

sb.append (CRLF);

sb.append ("</BANNER>");

sb.append (CRLF);

String sbstr = sb.toString ();

sb = null;

OutputStream fos = new FileOutputStream (dest);

OutputStream bos = new BufferedOutputStream (fos);

PrintStream ps = new PrintStream (bos, true, "UTF-8");

ps.print (sbstr);

ps.flush (); ps.close ();

bos.flush (); bos.close ();

fos.flush (); fos.close ();

JOptionPane.showMessageDialog (

stlBox,

("Saved "+dest.getAbsolutePath ()+""),

"Saved", JOptionPane.INFORMATION_MESSAGE);

return;

}

catch (Exception e)

{ e.printStackTrace ();

JOptionPane.showMessageDialog (

stlBox,

"Error while registering datas!",

"Error", JOptionPane.ERROR_MESSAGE);

return;

}}

private final void saveIt ()

{ if (bimg == null) return;

int r = jfc.showSaveDialog (stlBox);

if (r != JFileChooser.APPROVE_OPTION) return;

File f = jfc.getSelectedFile ();

String name = f.getName ();

if (valid (name) == false) return;

String format = format (name);

try

{ImageIO.write (bimg, format, f);

JOptionPane.showMessageDialog (stlBox, "Saved: "+name+"");

}

catch (Exception e)

{ JOptionPane.showMessageDialog (stlBox,

"Could Not Saved: "+name+"",

"Error",

JOptionPane.ERROR_MESSAGE);

return;

}

return;

}

private final boolean valid (String name)

{ String sx = name.toLowerCase ();

if (sx.endsWith (".jpg") || sx.endsWith (".jpeg") ||

sx.endsWith (".gif") || sx.endsWith (".png"))

{ return true;

}

return false;

}

private final String format (String name)

{ String sx = name.toLowerCase ();

if (sx.endsWith (".jpg")) return "JPG";

if (sx.endsWith (".jpeg")) return "JPEG";

if (sx.endsWith (".gif")) return "GIF";

if (sx.endsWith (".png")) return "PNG";

return "JPG";

}

private final JLabel getLabel (String s)

{ JLabel l = new JLabel (s, JLabel.LEFT);

return l;

}

private final JMenu getMenu (String s)

{ JMenu m = new JMenu (s);

return m;

}

private final JMenuItem getItem (String s)

{ JMenuItem m = new JMenuItem (s);

return m;

}

private final JComboBox getComboBox (String [] s)

{ JComboBox c = new JComboBox (s);

return c; }

private final JButton getButton ()

{ JButton b = new JButton ("");

return b;

}

private final JTextField getField (String s)

{ JTextField b = new JTextField ("");

b.setDragEnabled (true);

return b;

}

private final JCheckBox getCheckBox (String s)

{JCheckBox c = new JCheckBox (s);

return c;

} private final class XPanel

extends JPanel

{ private XPanel ()

{super (true);

setBackground (Color.white);

setPreferredSize (new Dimension (1024, 768));

addMouseListener (new MouseAdapter ()

{public void mouseClicked (MouseEvent evt)

{ xField.setText (Integer.toString (evt.getX ()));

yField.setText (Integer.toString (evt.getY ()));

return; }

});

}public void update (Graphics g)

{ paintComponent (g);

}

protected void paintComponent (Graphics g)

{ super.paintComponent (g);

g.setColor (Color.white);

Dimension d = getSize ();

g.fillRect (0, 0, d.width, d.height);

if (bimg != null)

{ g.drawImage (bimg, 0, 0, this);

}}}

public void actionPerformed (ActionEvent evt)

{ Thread t = new Thread ()

{ public void run ()

{ try

{ if (generate ());

}

catch (Exception e)

{return;

}}

};t.start ();

}

private final boolean generate ()

throws Exception

{ String text = textField.getText ();

int banwidth = Integer.parseInt (wField.getText ());

int banheight = Integer.parseInt (hField.getText ());

int tx = Integer.parseInt (xField.getText ());

int ty = Integer.parseInt (yField.getText ());

String fname = (String)(fmBox.getSelectedItem ());

int style = stlBox.getSelectedIndex ();

int size = Integer.parseInt ((String)(szBox.getSelectedItem ()));

Font font = new Font (fname, style, size);

Color cf = fontColor;

BufferedImage bi = new BufferedImage (banwidth, banheight, 1);

Graphics2D g2d = bi.createGraphics ();

boolean render = isRenderCB.isSelected ();

if (render)

{ g2d.setRenderingHint (RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

g2d.setRenderingHint (RenderingHints.KEY_RENDERING,

RenderingHints.VALUE_RENDER_QUALITY);

}

g2d.setBackground (Color.white);

g2d.clearRect (0, 0, banwidth, banheight);

g2d.setColor (Color.black);

g2d.drawRect (1, 1, banwidth-2, banheight-2);

boolean gradient = selectedCB.isSelected ();

String cyc = (String)cycleBox.getSelectedItem ();

boolean cycle = cyc.equals ("true");

if (gradient)

{GradientPaint GP = new GradientPaint (

Integer.parseInt (gradX_1_Field.getText ()),

Integer.parseInt (gradY_1_Field.getText ()),

gradColor_1_Button.getBackground (),

Integer.parseInt (gradX_2_Field.getText ()),

Integer.parseInt (gradY_2_Field.getText ()),

gradColor_2_Button.getBackground (),

cycle

);

g2d.setPaint (GP);

g2d.fillRect (0, 0, banwidth, banheight);

}

AttributedString astr = new AttributedString (text);

astr.addAttribute (TextAttribute.FONT, font);

astr.addAttribute (TextAttribute.FOREGROUND, clButton.getBackground ());

AttributedCharacterIterator iter = astr.getIterator ();

int start = iter.getBeginIndex ();

int end = iter.getEndIndex ();

FontRenderContext frc = g2d.getFontRenderContext ();

LineBreakMeasurer ms = new LineBreakMeasurer (iter, frc);

float wdf = (float)banwidth;

float xf = (float)tx;

float yf = (float)ty;

ms.setPosition (start);

while (ms.getPosition () < end)

{TextLayout tl = ms.nextLayout (wdf);

tl.draw (g2d, xf, yf);

yf += tl.getAscent ();

yf += (tl.getDescent ()+tl.getLeading ());

}

if (bi != null) bimg = bi;

g2d.dispose ();

bot.repaint ();

return true;

}

private static final void setLF ()

{String jvers = System.getProperty ("java.version");

if (jvers.compareTo ("1.6") >= 0)

{ try

{UIManager.setLookAndFeel (

"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

return;

}catch (Exception e)

{}

}

String osvers = System.getProperty ("os.name");

if (osvers.indexOf ("Windows") >= 0)

{ try

{UIManager.setLookAndFeel (

"com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

return; }

catch (Exception e)

{}

}}

/** Arata screen*/

private static final void showScreen ()

{ setLF ();

JFrame fr = new JFrame ("");

// fr.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

fr.addWindowListener (new WindowAdapter ()

{

});

JComponent jc = new applet ();

jc.setOpaque (true);

fr.setContentPane (jc);

javax.swing.SwingUtilities.updateComponentTreeUI (stlBox);

javax.swing.SwingUtilities.updateComponentTreeUI (jfc);

fr.pack ();

fr.setSize (640, 480);

fr.setResizable (true);

fr.setLocationRelativeTo (null);

fr.setVisible (true);

} public static final void main (String [] args)

{ Runnable r = new Runnable ()

{public void run ()

{ showScreen ();

}};

javax.swing.SwingUtilities.invokeLater (r);

}}

BIBLIOGRAFIE

Adamiu I., Brut V. Java de la 0 la expert . Iași: Polirom, 2007.380p.

Arnold Ken, James Gosling, David Holmes. The Java™ Programming Language, Fourth Edition. Boston: Addison-Wesley , 2005. 320p.

Beck, Kent. Extreme Programming Explained: Embrace Change. Boston: Addison-Wesley, 1999. 2803p.

Bloch, Joshua. Effective Java™ Programming Language Guide. Boston: Addison-Wesley, 2001. 420p.

Bloch, Joshua, and Neal Gafter. Java™ Puzzlers: Traps, Pitfalls, and Corner Cases. Boston: Addison-Wesley, 2005. 220p.

Bloch, Joshua. Collections. In The Java™ Tutorial: A Short Course on the Basics, Fourth Edition. Boston: Addison-Wesley, 2006. 386p.

Bracha, Gilad. Generics in the Java Programming Language. Boston: Addison-Wesley, 2004. 658p.

Cristea V. ș.a. Sisteme inteligente de instruire pe Web. Bucuresti: Editura Politehnica Press, 2005. 452p.

Finke A. ș.a. E-learning System Content and Arhitecture Evolution. Riga:Gold, 2010. 339p.

Chun Russell. Java expert . USA: Adobe Press, 2010. 385p.

Ioniță A. Effective java 1. București:Polirom 2002. 250p.

Ioniță A. Effective java for programing. București:Polirom 2005. 323p.

Goetz Brian, Tim Peierls . Java Concurrency in Practice. Boston: Addison-Wesley, 2006. 535p.

Gong Li, Gary Ellison, Mary Dageforde. Inside Java™ 2 Platform Security, Second Edition. Boston: Addison-Wesley, 2003. 468p.

Gosling James, Bill Joy, and Guy Steele, and Gilad Bracha. The Java™ Language Specification, Third Edition. Boston: Addison-Wesley, 2005.433p.

Langer, Angelika. Java Generics FAQs — Frequently Asked Questions. London:Book, 2008. 139p.

Lea, Doug. Concurrent Programming in Java™: Design Principles and Patterns, Second Edition. Boston: Addison-Wesley, 2000. 254p.

Naftalin Maurice, Philip Wadler. Java Generics and Collections. Sebastopol:O’Reilly Media, 2007. 330p.

Nica I., Brut V. Java pentru experți . Iași: Polirom, 2004.390p.

Reinhardt Robert.Online strategies . California: Press, 2009. 400p.

Rice William. Moodle 1.9 E-Learning Course Development. Alabama: Packt Publishing, 2008. 384p.

Rosca I. ș.a. Publicitatea online, RevistaInformatica Economica, nr. 2 . București, 2002. 17p.

Morvan P. ș.a. Dicționar de Informatică. Traducere. București: Editura Niculescu, 2005. 340p.

Smith P. ș.a. Instructional Design. New York: John Wilez & Sons, 2005. 197p.

Vlada M. Java pentru începători . București: Editura Universității din Bucuresti, 2003. 489p.

ANEXA 1. Listingul programului.

Codul sursă a programului

import java.io.*;

import java.awt.*;

import java.awt.event.*;

import java.awt.image.*;

import java.awt.font.*;

import javax.swing.JApplet;

import java.text.*;

import javax.swing.*;

import javax.swing.text.JTextComponent;

import javax.imageio.*;

import org.xml.sax.*;

import org.xml.sax.helpers.*;

final

public class applet

extends JPanel

implements ActionListener

{private JComboBox fmBox;

private JComboBox szBox;

static private JComboBox stlBox;

private JButton clButton;

private JTextField gradX_1_Field;

private JTextField gradY_1_Field;

private JTextField gradX_2_Field;

private JTextField gradY_2_Field;

private JTextField xField;

private JTextField yField;

private JTextField wField;

private JTextField hField;

private JComboBox cycleBox;

private JCheckBox isRenderCB;

private JCheckBox selectedCB;

private JTextField textField;

private static final JFileChooser jfc = new JFileChooser ();

private Color fontColor = Color.black;

private JButton gradColor_1_Button;

private JButton gradColor_2_Button;

private Color gradColor_1 = null;

private Color gradColor_2 = null;

private JPanel bot;

private BufferedImage bimg;

private JComponent [] components;

private int componentsLength = 0;

private XMLReader xmlreader;

private ContentHandler handler = null;

private applet ()

{super (new BorderLayout ());

jfc.addChoosableFileFilter (new javax.swing.filechooser.FileFilter ()

{public boolean accept (File f)

{if (f.isDirectory ()) return true;

String name = (f.getName ()).toLowerCase ();

if (name.endsWith (".xml"))

{return true;

}

return false;

} public String getDescription ()

{return "xml files";

}

});

jfc.addChoosableFileFilter (new javax.swing.filechooser.FileFilter ()

{ public boolean accept (File f)

{if (f.isDirectory ()) return true;

String name = (f.getName ()).toLowerCase ();

if (name.endsWith (".jpg") || name.endsWith (".jpeg")

|| name.endsWith (".gif") || name.endsWith (".png"))

{ return true;

}

return false;

}

public String getDescription ()

{return "jpg, gif, png files";

}

});

jfc.setAcceptAllFileFilterUsed (false);

jfc.setCurrentDirectory (new File ("images"));

JPanel top = new JPanel (new GridLayout (10, 4, 2, 2));

bot = new XPanel ();

JSplitPane pane = new JSplitPane (JSplitPane.VERTICAL_SPLIT,

top, new JScrollPane (bot));

pane.setOneTouchExpandable (true);

JLabel wLabel = getLabel ("width:");

top.add (wLabel);

wField = getField ("");

top.add (wField);

JLabel hLabel = getLabel ("height:");

top.add (hLabel);

hField = getField ("");

top.add (hField);

JLabel fmLabel = getLabel ("Family:");

top.add (fmLabel);

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment ();

String [] fnames = ge.getAvailableFontFamilyNames ();

fmBox = getComboBox (fnames);

top.add (fmBox);

JLabel szLabel = getLabel ("Size:");

top.add (szLabel);

String [] szs = new String [33];

for (int i=0; i<=32; i++)

{ szs [i] = Integer.toString (i+8);

}

szBox = getComboBox (szs);

top.add (szBox);

JLabel stLabel = getLabel ("Style:");

top.add (stLabel);

String styles [] = new String []

{"Plain", "Bold", "Italic", "Bold+Italic"

};

stlBox = getComboBox (styles);

top.add (stlBox);

JLabel clLabel = getLabel ("Color:");

top.add (clLabel);

clButton = getButton ();

clButton.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt)

{ Color c = JColorChooser.showDialog (clButton, "Font color", Color.black);

if (c != null)

{fontColor = c;

clButton.setBackground (fontColor);

return;

}

else

{ fontColor = Color.black;

clButton.setBackground (fontColor);

return;

}

}

});

top.add (clButton);

JLabel xLabel = getLabel ("x:");

top.add (xLabel);

xField = getField ("");

top.add (xField);

JLabel yLabel = getLabel ("y:");

top.add (yLabel);

yField = getField ("");

top.add (yField);

JLabel gradX_1_Label = getLabel ("Grad x1:");

top.add (gradX_1_Label);

gradX_1_Field = getField ("");

top.add (gradX_1_Field);

JLabel gradY_1_Label = getLabel ("Grad y1:");

top.add (gradY_1_Label);

gradY_1_Field = getField ("");

top.add (gradY_1_Field);

JLabel gradX_2_Label = getLabel ("Grad x2:");

top.add (gradX_2_Label);

gradX_2_Field = getField ("");

top.add (gradX_2_Field);

JLabel gradY_2_Label = getLabel ("Grad y2:");

top.add (gradY_2_Label);

gradY_2_Field = getField ("");

top.add (gradY_2_Field);

JLabel gradColor_1_Label = getLabel ("Grad Color 1:");

top.add (gradColor_1_Label);

gradColor_1_Button = getButton ();

gradColor_1_Button.addActionListener (new ActionListener ()

{public void actionPerformed (ActionEvent evt)

{ Color c = JColorChooser.showDialog (clButton, "Font color", Color.white);

if (c != null)

{ gradColor_1 = c;

gradColor_1_Button.setBackground (gradColor_1);

return;

}

else

{ gradColor_1 = Color.white;

gradColor_1_Button.setBackground (gradColor_1);

return;

}

}

});

top.add (gradColor_1_Button);

JLabel gradColor_2_Label = getLabel ("Grad Color 2:");

top.add (gradColor_2_Label);

gradColor_2_Button = getButton ();

gradColor_2_Button.addActionListener (new ActionListener ()

{public void actionPerformed (ActionEvent evt)

{ Color c = JColorChooser.showDialog (clButton, "Font color", Color.white);

if (c != null)

{ gradColor_2 = c;

gradColor_2_Button.setBackground (gradColor_2);

return;

}else

{ gradColor_2 = Color.white;

gradColor_2_Button.setBackground (gradColor_2);

return; }

}

});

top.add (gradColor_2_Button);

JLabel gradCycleLabel = getLabel ("Grad Cycle:");

top.add (gradCycleLabel);

cycleBox = getComboBox (new String []{"true", "false"});

top.add (cycleBox);

isRenderCB = getCheckBox ("Use Render:");

top.add (isRenderCB);

selectedCB = getCheckBox ("Gradient: ");

top.add (selectedCB);

JLabel textLabel = getLabel ("Text:");

top.add (textLabel);

textField = getField ("");

top.add (textField);

JButton saveButton = getButton ();

saveButton.setText ("Save");

saveButton.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt)

{ Thread t = new Thread ()

{ public void run ()

{ saveIt ();

}

};

t.start ();}

});

top.add (saveButton);

JButton regButton = getButton ();

regButton.setText ("Register");

regButton.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt)

{ Thread t = new Thread ()

{ public void run ()

{ regIt ();

}};

t.start ();

}});

top.add (regButton);

JButton generateButton = getButton ();

generateButton.setText ("Generate");

generateButton.addActionListener (this);

top.add (generateButton);

JButton openButton = getButton ();

openButton.setText ("Open");

openButton.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt)

{Thread t = new Thread ()

{ public void run ()

{ int r = jfc.showOpenDialog (stlBox);

if (r != JFileChooser.APPROVE_OPTION) return;

File f = jfc.getSelectedFile ();

BufferedImage bi = null;

try

{ bi = ImageIO.read (f);

}

catch (Exception e)

{ return;

}

if (bi != null)

{ bimg = bi;

bot.repaint ();

}

}

};

t.start ();

}

});

top.add (openButton);

JButton resetButton = getButton ();

resetButton.setText ("Clear");

resetButton.addActionListener (new ActionListener ()

{ public void actionPerformed (ActionEvent evt)

{bimg = null;

bot.repaint ();

}

});

top.add (resetButton);

add ("Center", pane);

components = new JComponent []

{ fmBox, szBox, stlBox, clButton,

gradX_1_Field, gradY_1_Field,

gradX_2_Field, gradY_2_Field,

gradColor_1_Button, gradColor_2_Button,

xField, yField, wField, hField,

cycleBox, isRenderCB, selectedCB,

textField

};

componentsLength= components.length;

setNames ();

try

{ handler = new MyContentHandler (components, componentsLength);

xmlreader = XMLReaderFactory.createXMLReader ();

xmlreader.setContentHandler (handler);

}

catch (Exception e)

{ xmlreader = null;

}

}

private final void setNames ()

{wField.setName ("Banner_Width");

hField.setName ("Banner_Height");

textField.setName ("Banner_Text");

xField.setName ("Banner_Text_X");

yField.setName ("Banner_Text_Y");

fmBox.setName ("Font_Family");

szBox.setName ("Font_Size");

stlBox.setName ("Font_Style");

clButton.setName ("Font_Color");

isRenderCB.setName ("Is_Rendering");

selectedCB.setName ("Is_Gradient");

cycleBox.setName ("Gradient_Is_Cycle");

gradX_1_Field.setName ("Gradient_X_1");

gradY_1_Field.setName ("Gradient_Y_1");

gradColor_1_Button.setName ("Gradient_Color_1");

gradX_2_Field.setName ("Gradient_X_2");

gradY_2_Field.setName ("Gradient_Y_2");

gradColor_2_Button.setName ("Gradient_Color_2");

};

private int fnum = 0;

private final void regIt ()

{try

{ File fd = new File ("images/xml");

if (fd.exists () && fd.isFile ())

{ JOptionPane.showMessageDialog (stlBox, "There is not images/xml folder. Produce it before");

return;

};

if (fd.exists () == false) fd.mkdir ();

jfc.setCurrentDirectory (fd);

int rep = jfc.showSaveDialog (stlBox);

if (rep != JFileChooser.APPROVE_OPTION) return;

File dest = jfc.getSelectedFile ();

String CRLF = "\r\n";

StringBuffer sb = new StringBuffer ();

String fname = (String)(fmBox.getSelectedItem ());

int style = stlBox.getSelectedIndex ();

int size = Integer.parseInt ((String)(szBox.getSelectedItem ()));

Color cf = fontColor;

sb.append ("\t\t<Font_Family>");

sb.append (fname);

sb.append ("</Font_Family>");

sb.append (CRLF);

sb.append ("\t\t<Font_Size>");

sb.append (Integer.toString (size));

sb.append ("</Font_Size>");

sb.append (CRLF);

sb.append ("\t\t<Font_Style>");

sb.append (Integer.toString (style));

sb.append ("</Font_Style>");

sb.append (CRLF);

sb.append ("\t\t<Font_Color>");

sb.append (Integer.toString (cf.getRGB ()));

sb.append ("</Font_Color>");

sb.append (CRLF);

String banw = wField.getText ();

String banh = hField.getText ();

sb.append ("\t\t<Banner_Width>");

sb.append (banw);

sb.append ("</Banner_Width>");

sb.append (CRLF);

sb.append ("\t\t<Banner_Height>");

sb.append (banh);

sb.append ("</Banner_Height>");

sb.append (CRLF);

String text = textField.getText ();

sb.append ("\t\t<Banner_Text>");

sb.append (text);

sb.append ("</Banner_Text>");

sb.append (CRLF);

String tx = xField.getText ();

String ty = yField.getText ();

sb.append ("\t\t<Banner_Text_X>");

sb.append (tx);

sb.append ("</Banner_Text_X>");

sb.append (CRLF);

sb.append ("\t\t<Banner_Text_Y>");

sb.append (ty);

sb.append ("</Banner_Text_Y>");

sb.append (CRLF);

String render = (isRenderCB.isSelected ()?"true":"false");

sb.append ("\t\t<Is_Rendering>");

sb.append (render);

sb.append ("</Is_Rendering>");

sb.append (CRLF);

String gradient = (selectedCB.isSelected ()?"true":"false");

if (gradient.equals ("true"))

{ sb.append ("\t\t<Is_Gradient>");

sb.append (gradient);

sb.append ("</Is_Gradient>");

sb.append (CRLF);

String cyc = (String)cycleBox.getSelectedItem ();

sb.append ("\t\t<Gradient_Is_Cycle>");

sb.append (cyc);

sb.append ("</Gradient_Is_Cycle>");

sb.append (CRLF);

String gx1 = gradX_1_Field.getText ();

sb.append ("\t\t<Gradient_X_1>");

sb.append (gx1);

sb.append ("</Gradient_X_1>");

sb.append (CRLF);

String gy1 = gradY_1_Field.getText ();

sb.append ("\t\t<Gradient_Y_1>");

sb.append (gy1);

sb.append ("</Gradient_Y_1>");

sb.append (CRLF);

String gc1 = Integer.toString (gradColor_1.getRGB ());

sb.append ("\t\t<Gradient_Color_1>");

sb.append (gc1);

sb.append ("</Gradient_Color_1>");

sb.append (CRLF);

String gx2 = gradX_2_Field.getText ();

sb.append ("\t\t<Gradient_X_2>");

sb.append (gx2);

sb.append ("</Gradient_X_2>");

sb.append (CRLF);

String gy2 = gradY_2_Field.getText ();

sb.append ("\t\t<Gradient_Y_2>");

sb.append (gy2);

sb.append ("</Gradient_Y_2>");

sb.append (CRLF);

String gc2 = Integer.toString (gradColor_2.getRGB ());

sb.append ("\t\t<Gradient_Color_2>");

sb.append (gc2);

sb.append ("</Gradient_Color_2>");

sb.append (CRLF);

}

sb.append ("\t</Data>");

sb.append (CRLF);

sb.append ("</BANNER>");

sb.append (CRLF);

String sbstr = sb.toString ();

sb = null;

OutputStream fos = new FileOutputStream (dest);

OutputStream bos = new BufferedOutputStream (fos);

PrintStream ps = new PrintStream (bos, true, "UTF-8");

ps.print (sbstr);

ps.flush (); ps.close ();

bos.flush (); bos.close ();

fos.flush (); fos.close ();

JOptionPane.showMessageDialog (

stlBox,

("Saved "+dest.getAbsolutePath ()+""),

"Saved", JOptionPane.INFORMATION_MESSAGE);

return;

}

catch (Exception e)

{ e.printStackTrace ();

JOptionPane.showMessageDialog (

stlBox,

"Error while registering datas!",

"Error", JOptionPane.ERROR_MESSAGE);

return;

}}

private final void saveIt ()

{ if (bimg == null) return;

int r = jfc.showSaveDialog (stlBox);

if (r != JFileChooser.APPROVE_OPTION) return;

File f = jfc.getSelectedFile ();

String name = f.getName ();

if (valid (name) == false) return;

String format = format (name);

try

{ImageIO.write (bimg, format, f);

JOptionPane.showMessageDialog (stlBox, "Saved: "+name+"");

}

catch (Exception e)

{ JOptionPane.showMessageDialog (stlBox,

"Could Not Saved: "+name+"",

"Error",

JOptionPane.ERROR_MESSAGE);

return;

}

return;

}

private final boolean valid (String name)

{ String sx = name.toLowerCase ();

if (sx.endsWith (".jpg") || sx.endsWith (".jpeg") ||

sx.endsWith (".gif") || sx.endsWith (".png"))

{ return true;

}

return false;

}

private final String format (String name)

{ String sx = name.toLowerCase ();

if (sx.endsWith (".jpg")) return "JPG";

if (sx.endsWith (".jpeg")) return "JPEG";

if (sx.endsWith (".gif")) return "GIF";

if (sx.endsWith (".png")) return "PNG";

return "JPG";

}

private final JLabel getLabel (String s)

{ JLabel l = new JLabel (s, JLabel.LEFT);

return l;

}

private final JMenu getMenu (String s)

{ JMenu m = new JMenu (s);

return m;

}

private final JMenuItem getItem (String s)

{ JMenuItem m = new JMenuItem (s);

return m;

}

private final JComboBox getComboBox (String [] s)

{ JComboBox c = new JComboBox (s);

return c; }

private final JButton getButton ()

{ JButton b = new JButton ("");

return b;

}

private final JTextField getField (String s)

{ JTextField b = new JTextField ("");

b.setDragEnabled (true);

return b;

}

private final JCheckBox getCheckBox (String s)

{JCheckBox c = new JCheckBox (s);

return c;

} private final class XPanel

extends JPanel

{ private XPanel ()

{super (true);

setBackground (Color.white);

setPreferredSize (new Dimension (1024, 768));

addMouseListener (new MouseAdapter ()

{public void mouseClicked (MouseEvent evt)

{ xField.setText (Integer.toString (evt.getX ()));

yField.setText (Integer.toString (evt.getY ()));

return; }

});

}public void update (Graphics g)

{ paintComponent (g);

}

protected void paintComponent (Graphics g)

{ super.paintComponent (g);

g.setColor (Color.white);

Dimension d = getSize ();

g.fillRect (0, 0, d.width, d.height);

if (bimg != null)

{ g.drawImage (bimg, 0, 0, this);

}}}

public void actionPerformed (ActionEvent evt)

{ Thread t = new Thread ()

{ public void run ()

{ try

{ if (generate ());

}

catch (Exception e)

{return;

}}

};t.start ();

}

private final boolean generate ()

throws Exception

{ String text = textField.getText ();

int banwidth = Integer.parseInt (wField.getText ());

int banheight = Integer.parseInt (hField.getText ());

int tx = Integer.parseInt (xField.getText ());

int ty = Integer.parseInt (yField.getText ());

String fname = (String)(fmBox.getSelectedItem ());

int style = stlBox.getSelectedIndex ();

int size = Integer.parseInt ((String)(szBox.getSelectedItem ()));

Font font = new Font (fname, style, size);

Color cf = fontColor;

BufferedImage bi = new BufferedImage (banwidth, banheight, 1);

Graphics2D g2d = bi.createGraphics ();

boolean render = isRenderCB.isSelected ();

if (render)

{ g2d.setRenderingHint (RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON);

g2d.setRenderingHint (RenderingHints.KEY_RENDERING,

RenderingHints.VALUE_RENDER_QUALITY);

}

g2d.setBackground (Color.white);

g2d.clearRect (0, 0, banwidth, banheight);

g2d.setColor (Color.black);

g2d.drawRect (1, 1, banwidth-2, banheight-2);

boolean gradient = selectedCB.isSelected ();

String cyc = (String)cycleBox.getSelectedItem ();

boolean cycle = cyc.equals ("true");

if (gradient)

{GradientPaint GP = new GradientPaint (

Integer.parseInt (gradX_1_Field.getText ()),

Integer.parseInt (gradY_1_Field.getText ()),

gradColor_1_Button.getBackground (),

Integer.parseInt (gradX_2_Field.getText ()),

Integer.parseInt (gradY_2_Field.getText ()),

gradColor_2_Button.getBackground (),

cycle

);

g2d.setPaint (GP);

g2d.fillRect (0, 0, banwidth, banheight);

}

AttributedString astr = new AttributedString (text);

astr.addAttribute (TextAttribute.FONT, font);

astr.addAttribute (TextAttribute.FOREGROUND, clButton.getBackground ());

AttributedCharacterIterator iter = astr.getIterator ();

int start = iter.getBeginIndex ();

int end = iter.getEndIndex ();

FontRenderContext frc = g2d.getFontRenderContext ();

LineBreakMeasurer ms = new LineBreakMeasurer (iter, frc);

float wdf = (float)banwidth;

float xf = (float)tx;

float yf = (float)ty;

ms.setPosition (start);

while (ms.getPosition () < end)

{TextLayout tl = ms.nextLayout (wdf);

tl.draw (g2d, xf, yf);

yf += tl.getAscent ();

yf += (tl.getDescent ()+tl.getLeading ());

}

if (bi != null) bimg = bi;

g2d.dispose ();

bot.repaint ();

return true;

}

private static final void setLF ()

{String jvers = System.getProperty ("java.version");

if (jvers.compareTo ("1.6") >= 0)

{ try

{UIManager.setLookAndFeel (

"com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

return;

}catch (Exception e)

{}

}

String osvers = System.getProperty ("os.name");

if (osvers.indexOf ("Windows") >= 0)

{ try

{UIManager.setLookAndFeel (

"com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

return; }

catch (Exception e)

{}

}}

/** Arata screen*/

private static final void showScreen ()

{ setLF ();

JFrame fr = new JFrame ("");

// fr.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

fr.addWindowListener (new WindowAdapter ()

{

});

JComponent jc = new applet ();

jc.setOpaque (true);

fr.setContentPane (jc);

javax.swing.SwingUtilities.updateComponentTreeUI (stlBox);

javax.swing.SwingUtilities.updateComponentTreeUI (jfc);

fr.pack ();

fr.setSize (640, 480);

fr.setResizable (true);

fr.setLocationRelativeTo (null);

fr.setVisible (true);

} public static final void main (String [] args)

{ Runnable r = new Runnable ()

{public void run ()

{ showScreen ();

}};

javax.swing.SwingUtilities.invokeLater (r);

}}

Similar Posts