Java JavaFX
Java JavaFX
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ă.
→ 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ă:
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 MediaPlayer redă conţinutul;