JAVA FX JavaFX este un nou “framework” pentru dezvoltarea interfețelor grafice (GUI) .Acesta este un exemplu excelent de aplicarea a principiului de programare orientata pe obiecte. Swing si AWT sunt înlocuite de către platforma JavaFX pentru dezvoltarea RIA(rich internet application). JavaFX este un set de pachete grafice și multimedia care permite dezvoltatorilor proiectarea, testarea, depanarea precum și implementarea aplicațiilor bogate în conținut care ruleaza constant pe diverse platforme. Diagrama de arhitectură a JavaFx Interfața grafică în JavaFx este construită ca scena grafică. O scena grafică este o colecție de elemente vizuale, numite noduri.
17
Embed
robotics.ucv.rorobotics.ucv.ro/carti/java/Lab_Android_JavaFX/Laborator 1FX.docx · Web viewÎn NetBeans rularea de bază este ca aplicație de sine stătătoare desktop. Se poate
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
JAVA FX
JavaFX este un nou “framework” pentru dezvoltarea interfețelor grafice (GUI) .Acesta este un exemplu excelent de aplicarea a principiului de programare orientata pe obiecte. Swing si AWT sunt înlocuite de către platforma JavaFX pentru dezvoltarea RIA(rich internet application).
JavaFX este un set de pachete grafice și multimedia care permite dezvoltatorilor proiectarea, testarea, depanarea precum și implementarea aplicațiilor bogate în conținut care ruleaza constant pe diverse platforme.
Diagrama de arhitectură a JavaFx
Interfața grafică în JavaFx este construită ca scena grafică. O scena grafică este o colecție de elemente vizuale, numite noduri.
Crearea unui proiect JavaFx
Se va descărca ultima versiunea de NetBeans.(Click pe NetBeans)File -> New Project...
Se selectează JavaFx -> JavaFx application -> Next
Se introduce numele proiectului, calea, JavaFx Platform: JDK 1.8, numele pachetului.
Aplicația JavaFx poate fi compilată și rulată din interiorul programului NetBeans. Exista 3 posibilități de rularea : Rulare ca aplicație de sine stătătoare pentru desktop Rulare ca WebStart Rulare în browser
În NetBeans rularea de bază este ca aplicație de sine stătătoare desktop. Se poate schimba modul prin care aplicația rulează din proprietății-le proiectului sub categoria Run. Pentru a accesa fereastra Properties Project, selectați proiectul, click dreapta, și selectați Properties. Se selectează Run din lista de categorii. Se introduc proprietățiile dorite pentru proiectul dvs.
Ciclul de viață al aplicației JavaFx
La momentul execuției JavaFx creează câteva fire de execuție (threads). Pe parcursul rulării aplicației, firele de execuție sunt folosite pentru a efectua diferite sarcini (taksuri). Printre altele JavaFx creează doua fire de execuție importante:
JavaFx-Launcher JavaFx Application ThreadMetoda launch() a clasei Application crează aceste fire de execuție. Pe parcursul timpului de
viață al aplicației JavaFx, JavaFx apelează urmatoarele metode specifice clasei Application în ordinea:
no-args constructor metoda init() metoda start() metoda stop()Metoda init() este neimplementată, deci se poate suprascrie în program.
Firul de execuție JavaFx Application apelează metoda start() (Stage stage), metodă specifică clasei Application. Este o metodă abstractă deci poate fi suprascrisa în program.
În acest moment, metoda launc() așteaptă aplicația JavaFx sa se sfârșească. Când aplicația se termină, firul de execuție JavaFx Application apelează metoda stop(). Implementarea de bază a metodei stop() este “goală” în clasa Application, aceasta trebuie suprascrisă în program.
Urmatorul program prezintă ciclul de viață al aplicației JavaFx si pe UI un stagiu gol. În consolă este afișat ciclul de viață pe parcursul rulării.
O clasa java conține doua tipuri de membrii: câmpuri si metode. Câmpurile reprezintă starea obiectelor și ele sunt declarate private. Metodele publice, știu-te și ca accesorii sau “getters” și “setters”, sunt folosite pentru a
citii și modifica valoarea campurilor declarate ca private.Pe scurt, o clasa Java care are metode de “getters” și “setters” este cunoscută ca și Java
“bean”, accesoriile definesc proprietățiile.
Structura de baza a unui program JavaFX:
Clasa java.fx.application.Application definește framework-ul pentru a scrie programe JavaFx.
Prima dumneavoastră aplicație JavaFx. Aceasta trebuie să afișeze textul “Hello World” în interiorul unui buton aflat în mijlocul ferestrei, la apăsarea acestuia va fi afisat la consola Ace.
O aplicație JavaFx este o clasă care trebuie să moștenească application care se afla în pachetul javafx.application. Veți numii clasa AutomaticaFxApp și va fi stocată în pachetul ace.ucv.
public class AutomaticaFxApp extends Application implements EventHandler<ActionEvent>{ @Override public void start(Stage primaryStage) { primaryStage.setTitle("Hello word!"); Button btn = new Button(); //crearea butonului btn.setText("Say 'Hello World'"); //setarea textului din centru buttonului btn.setOnAction(this); //setarea functionalitati la apasarea acestui buton StackPane layout = new StackPane(); layout.getChildren().add(btn);//adaugarea butonului in scena Scene scene = new Scene(layout, 300, 250); //crarea scenei primaryStage.setScene(scene); //setarea scenei primaryStage.show(); //afisara scenei } @Override public void handle(ActionEvent event) { System.out.println("Hello World"); //afisarea Hello World in consola } //la apasarea butonului
public static void main(String[] args) { launch(args); }}
În urmatorul exemplu se creează un buton, i se seteaza proprietățiile dupa care este adaugat în panou. Panoul este rotit cu 45 grade.
JavaFx permite schimbarea stilului pentru font și a mărimi textului. Mai jos este prezentată o aplicație JavaFx care afișează patru texte “JavaFX8 : Exemplu”, fiecare având fonturi diferite iar unele dintre ele au adăugate efecte cum ar fi umbra pentru text (DropShadow) și reflexie a textului (TextReflection).
public class SchimbareFont extends Application{ @Override public void start(Stage primaryStage) { primaryStage.setTitle("Schimbarea fontului"); System.out.println("Font: "); Font.getFamilies().stream() .forEach( i -> System.out.println(i)); System.out.println("Nume font: "); Font.getFontNames().stream() .forEach( i -> System.out.println(i)); Group root = new Group(); Scene scene = new Scene(root, 580, 250, Color.WHITE); // Setare font "Serif" cu umbre Text text2 = new Text(50, 50, "JavaFX8 : Exemplu"); Font serif = Font.font("Serif", 30); text2.setFont(serif); text2.setFill(Color.RED); DropShadow dropShadow = new DropShadow(); dropShadow.setOffsetX(2.0f); dropShadow.setOffsetY(2.0f);
dropShadow.setColor(Color.rgb(50, 50, 50, .588)); text2.setEffect(dropShadow); root.getChildren().add(text2); // Setare font "SanSerif" Text text3 = new Text(50, 100, "JavaFX8 : Exemplu"); Font sanSerif = Font.font("SanSerif", 30); text3.setFont(sanSerif); text3.setFill(Color.BLUE); root.getChildren().add(text3); // Setare font "Dialog" Text text4 = new Text(50, 150, "JavaFX8 : Exemplu"); Font dialogFont = Font.font("Dialog", 30); text4.setFont(dialogFont); text4.setFill(Color.rgb(0, 255, 0)); root.getChildren().add(text4); // Setare font "Monospaced" cu reflexie Text text5 = new Text(50, 200, "JavaFX8 : Exemplu"); Font monoFont = Font.font("Monospaced", 30); text5.setFont(monoFont); text5.setFill(Color.BLACK); root.getChildren().add(text5); // Setare reflexie Reflection refl = new Reflection(); refl.setFraction(0.8f); refl.setTopOffset(5); text5.setEffect(refl); primaryStage.setScene(scene); primaryStage.show();}public static void main(String[] args) { launch(args); }}
Chestiuni de studiat
1.Modificați primul program pentru a afișa “ACE Craiova” în locul textului “Hello JavaFX”.
2.Modificați programul de mai sus astfel încat să mai adaugați un buton cu textul “ACE”, la apasarea acestuia pe consolă va aparea “Hello ACE Craiova”.
3.Realizați un program cu 2 butoane si 2 texte, la apasarea butonului se va schimba atât textul cât și stilul fiecarui text.
@Override public void start(Stage primaryStage) { Button btn = new Button(); //crarea butonului btn.setText("Say 'Hello World'"); //setarea textului din centru butonului
btn.setOnAction(new EventHandler<ActionEvent>() { //setarea funcționalități // la apasarea acestuia
@Override public void handle(ActionEvent event) { btn.setText("Java"); Font dialogFont = Font.font("Dialog", 30); btn.setFont(dialogFont);
System.out.println("Hello World"); //afișarea Hello World în consolă } //la apasarea butonului