[[oktatas:programozás:java:java_fx|< Java FX]] ====== Java FX kezdés ====== * **Szerző:** Sallai András * Copyright (c) 2021, Sallai András * Szerkesztve: 2021, 2022, 2023 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== JavaFX ===== A JavaFX egy szoftverkörnyezet, ami lehetővé teszi asztali és webes alkalmazások készítését, számos eszközzel. Támogatott platformok: * asztali gép és böngésző Operációs rendszerek: * Windows * Linux * macOS * iOS * Android A JavaFX a Java SE része a Java 1.2-től. A Java 1.8-ból mégis kivették, valószínűleg a webes felületek térnyerése miatt ((Ennek valószínűségéről a https://en.wikipedia.org/wiki/JavaFX weblapon olvashatunk)). A JavaFX támogatja az eseményeket, tulajdonságokat, kötéseket és FXML dokumentumokat. Minden JavaFX elem megfelel az MVC mintának. A JavaFX megvalósítható FXML használatával és nélküle is. Az FXML-t a nézetek létrehozására használjuk. Az FXML nézet létrehozását segíti a SceneBuilder grafikus felület építő eszközt. Amikor az FXML a memóriába töltődik, továbbra is Java objektumok gyűjteménye. ===== Szükséges ===== Ha JavaFX-szel szeretnénk dolgozni, a következőkre van szükség: * JavaJDK * JavaFX * kódszerkesztő * SceneBuilder - opcionális ===== JavaJDK ===== A JavaJDK 8 tartalmazza még a JavaFX-t, a következő Java verziók viszont nem. A későbbi Java verziókhoz le kell tölteni a JavaFX-t. * https://openjfx.io/ ===== Dokumentáció ===== * https://openjfx.io/javadoc/19/ * https://fxdocs.github.io/docs/html5/ ===== Fogalmak ===== ==== Stage ==== A Stage a legfelső szintű konténer, tulajdonképpen maga az ablak. {{:oktatas:programozas:java:java_fx:javafx_stage.png|}} ==== Scene ==== A Stage-re egy Scene került. A Scene konténerbe újabb konténerek vagy egyetlen kontroll tehető fel. A Scene akár cserélhető is az Stage-en. {{:oktatas:programozas:java:java_fx:javafx_scene.png|}} Az elhelyezhető komponenseket kontroll néven használjuk. ==== Node-ok ==== A konténerek és kontrollok egy fastruktúrába szervezhetők. Mindegyik tartalmazhatja a másikat. Így minden kontroll egy csomópontot alkot, angolul node-t. {{:oktatas:programozas:java:java_fx:javafx_node-ok.png|}} ==== Node-ok kibontva ==== A példákban láthatjuk, ahogy a konténerek és a kontrollok csomópontokat alkotnak: {{:oktatas:programozas:java:java_fx:javafx_node_graph.png|}}