0% au considerat acest document util (0 voturi)
101 vizualizări5 pagini

Java JavaFX

Documentul prezintă mai multe mecanisme de dispunere a conținutului în JavaFX, precum și controale și efecte grafice disponibile. De asemenea, descrie sistemul multimedia și navigatorul web integrat în JavaFX.

Încărcat de

Bianca
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
101 vizualizări5 pagini

Java JavaFX

Documentul prezintă mai multe mecanisme de dispunere a conținutului în JavaFX, precum și controale și efecte grafice disponibile. De asemenea, descrie sistemul multimedia și navigatorul web integrat în JavaFX.

Încărcat de

Bianca
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca DOCX, PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 5

→ Mecanisme de Dispunere a Conţinutului

Controalele din graful de scene pot fi grupate în containere sau panouri în mod flexibil,
folosind mai multe mecanisme de dispunere a conținutului (eng. layout).

API-ul JavaFX defineşte mai multe clase de tip container pentru dispunerea elementelor, în
pachetul javafx.scene.layout:
 BorderPane dispune nodurile conţinute în regiunile de sus, jos, dreapta, stânga sau centru;
 HBox îşi aranjează conţinutul orizontal pe un singur rând;
 VBox îşi aranjează conţinutul vertical pe o singură coloană;
 StackPane utilizează o stivă de noduri afişând elementele unele peste altele, din spate
către față;
 GridPane permite utilizatorului să îşi definească un tabel (format din rânduri şi coloane)
în care să poată fi încadrate elementele conţinute;
 FlowPane dispune elementele fie orizontal, fie vertical, în funcţie de limitele specificate
de programator (lungime pentru dispunere orizontală, respectiv înălţime pentru dispunere
verticală);
 TilePane plasează nodurile conţinute în celule de dimensiuni uniforme;
 AnchorPane oferă programatorilor posibilitatea de a defini noduri ancoră (referinţă) în
funcţie de colţurile de jos / sus, din stânga / dreapta sau raportat la centrul containerului sau
panoului.

Diferitele moduri de dispunere pot fi imbricate în cadrul unei aplicaţii JavaFX pentru a se
obţine funcţionalitatea dorită.

→ Tipuri de Controale Grafice


Controalele pentru interfaţa cu utilizatorul disponibile prin API-ul JavaFX sunt implementate
ca noduri din graful de scene. Ele pot fi particularizate folosind foile de stil.
Biblioteca javafx.scene.control definește cele mai frecvent utilizate controale din cadrul
aplicațiilor ce conțin interfețe grafice cu utiliatorul.
→ Utilizarea Foilor de Stil
JavaFX permite stilizarea interfeţei cu utilizatorul folosind foi de stil (eng. CSS – Cascading
Style Sheets), deci fără a modifica codul sursă al aplicaţiei. Acestea pot fi aplicate asupra
oricărui obiect de tip Node din graful de scene, fiind aplicate asincron în momentul rulării (astfel
încât pot fi modificate și dinamic).
Specificația JavaFX CSS se bazează pe versiunea 2.1 a W3C CSS, cu unele actualizări din
versiunea 3. Astfel, fişierele conţinând foi de stil pot fi parsate de orice utilitar specializat, chiar
dacă acesta nu este integrat cu JavaFX. În acest fel, stilurile CSS pentru JavaFX și pentru alte
scopuri (pagini HTML) pot fi incluse într-o unică foaie de stil.
Toate proprietăţile JavaFX sunt prefixate cu şirul -fx- chiar şi pentru cele
compatibile CSS HTML, datorită faptului că semantica acestora poate fi diferită pentru valorile
corespunzătoare unor atribute.
Operații asupra Elementelor Grafice

→ Transformări 2D/3D
Fiecare nod din graful de scene JavaFX poate suferi transformări (2D/3D) în sistemul de
coordonate Oxyz folosind metodele puse la dispoziţie de pachetul javafx.scene.transform:
 translate – mută un nod dintr-un loc în altul de-a lungul planurilor x, y, z relativ la poziţia
sa iniţială;
 scale – redimensionează un nod pentru a apărea fie mai mare, fie mai mic în planurile x,
y, z (în funcţie de factorul de scalare);
 shear – roteşte o axă astfel încât axele x sau y să nu mai fie perpendiculare coordonatele
nodului fiind modificate conform specificaţiilor;
 rotate – roteşte un nod în jurul unui punct, denumit pivot al scenei;
 affine – realizează o mapare (liniară) dintr-un sistem de coordonate 2D/3D în alt sistem
de coordonate 2D/3D păstrând caracteristici ale dreptelor precum paralelismul sau
ortogonalitatea - această clasă ar trebui să fie utilizată împreună cu
clasele Translate, Scale, Rotate sau Shear în loc de a fi utilizată direct.
→ Efecte Vizuale

Îmbogăţirea aplicaţiilor JavaFX (în special a celor de timp real) se face prin efecte vizuale
care operează la nivel de pixel al imaginii, toate nodurile din graful de scene fiind randate ca
atare.
Efectele implementate în cadrul pachetului javafx.scene.effect sunt:
 Bloom (face ca zona cea mai luminoasă a unei imagini să pară strălucitoare);
 Blur (adaugă un efect de neclaritate asupra obiectului, putând fi de
tipul BoxBlur, MotionBlur sau GaussianBlur);
 DropShadow / InnerShadow (adaugă o umbră în spatele / în interiorul conţinutului
respectiv);
 Reflection (creează o versiune reflectată a conţinutului respectiv, dispunând-o sub
acesta);
 Lighting (simulează o sursă de lumină care operează asupra unui continut, dând un aspect
mai realistic, 3D, asupra unui obiect plat)
 Perspective (mapează un dreptunghi peste un alt dreptunghi, menţinând netezimea liniilor
dar nu neapărat şi paralelismul acestora).

→ Sistemul Grafic
În sistemul grafic din JavaFX pot fi implementate grafuri de scene 2D şi 3D care sunt
randate software atunci când hardware-ul nu dispune de accelerare grafică sau aceasta este
insuficientă.
Platforma JavaFX implementează două benzi de asamblare pentru accelerare grafică:

 Prism este folosit pentru operaţii de redare / rasterizare hardware / software a


conţinutului (scene JavaFX, 2D sau 3D) folosind DirectX 9 (Windows XP / Vista), DirectX 11
(Windows 7), OpenGL (Mac, Linux, sisteme încorporate);
Atunci când nu poate fi folosită accelerarea grafică la nivel hardware, se recurge la
accelerarea grafică la nivel software folosind Java2D datorită răspândirii ei la nivelul JRE, mai
ales când scena conţine obiecte 3D. Totuşi, trebuie să se țină cont de faptul că, în acest caz,
performanţele sunt mai reduse.
 Quantum Toolkit reprezintă un element de interfaţă între Prism şi sistemul de ferestre
Glass pe care le face disponibile nivelului JavaFX, ocupându-se şi de prioritatea firelor de
execuţie ce tratează redarea faţă de tratarea evenimentelor ce țin de interacțiunea cu utilizatorul.

La baza stivei de componente a sistemului grafic JavaFX se află Glass – un sistem de


ferestre, o interfaţă între API şi sistemul de operare responsabil cu gestiunea ferestrelor,
mecanismelor de cronometrare, suprafeţelor, cozii ce conține evenimentele de intrare / ieşire.

Spre diferenţă de alte biblioteci grafice care folosesc de regulă o coadă de evenimente de
intrare/ieşire proprie, JavaFX utilizează coada de evenimente a sistemului de operare gazdă
pentru a gestiona modul de alocare al acestora la firele de execuţie. O altă caracteristică proprie
este rularea sistemului de ferestre Glass pe acelaşi fir de execuţie ca şi aplicaţia JavaFX (alte
sisteme grafice implementează un fir de execuţie specific bibliotecii şi un fir de execuţie specific
Java, ceea ce putea genera o serie de probleme).

→ Sistemul Multimedia
JavaFX oferă suport pentru multimedia prin API-urile javafx.scene.media care implementează
atât conţinut auditiv (formatele .mp3, .aiff, .wav) cât şi vizual (formatul .flv).
Sunt implementate trei componente:

 obiectul Media reprezintă fişierul multimedia, auditiv sau vizual;

 obiectul MediaPlayer redă conţinutul;

 obiectul MediaView reprezintă nodul din graful de scene ce afişează utilizatorilor


informații despre conținutul redat, oferindu-le posibilitatea de a interacționa cu acesta prin
diferite operații.
Motorul multimedia a fost proiectat pentru a oferi stabilitate, performanţă şi comportament
consistent pentru toate platformele.
→ Sistemul pentru redarea de pagini internet
JavaFX include şi un navigator care permite redarea conţinutului Internet prin
intermediul API-ului său.

Componenta Web Engine se bazează pe WebKit, un navigator open-source care suportă


HTML5, CSS, JavaScript, DOM şi SVG, oferind o funcţionalitate asemănătoare cu cele mai
multe produse de acelaşi tip (redare conţinut HTML local şi aflat într-o locaţie la distanţă,
implementare istoric cu navigare înainte şi înapoi în cadrul acestuia, reîncărcarea conţinutului,
aplicarea unor efecte, editarea conţinutului HTML, execuţia de comenzi JavaScript şi tratarea
evenimentelor).

La nivelul componentei care integrează navigatorul sunt definite două clase:

 WebEngine care oferă funcţionalităţi de bază caracteristice unui navigator

 WebView (derivat din Node) care conține un obiect WebEngine, încorporând


conţinut HTML în scena aplicaţiei, oferind atribute şi metode pentru aplicarea de efecte şi
transformări.
De asemenea, apelurile Java pot fi controlate prin intermediul JavaScript şi invers, astfel
încât utilizatorii pot beneficia de avantajele ambelor medii de programare.

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