1. diel - Úvod do JavaFX
V tomto Java on-line kurzu sa naučíme vytvárať okenné (formulárové) aplikácie v JavaFX. Naučíme sa pracovať s tlačidlami, textovými poľami, tabuľkami, ale aj obrázky alebo napr. Grafy.
Pre absolvovanie kurzu nepotrebujete žiadne pokročilé znalosti. Predpokladám však, že poznáte aspoň základy objektovo orientovaného programovania v Jave.
API pre GUI v Jave
V Jave máme k dispozícii hneď 4 možnosti, ako vytvárať grafické aplikácie. Sú to:
- AWT - najstarší, relatívne rýchle API, ktoré je ale naviazané na volanie systémového API
- Swing - využíva vlastné vykresľovanie, ktoré je celé napísané v Jave a nezávislé na konkrétne platforme (naše aplikácie vyzerá všade rovnako), je samozrejme pomalší, ale užívateľsky prívetivejšie
- SWT - vytvorené firmou IBM, využité v Eclipse, jednoduchšie ako Swing, využíva natívny kód
- JavaFX - modernejší náhrada za Swing, ktorý je veľmi rozšírený, ale neumožňuje toľko uspôsobiť vzhľad aplikácií
JavaFX
JavaFX je moderný framework pre tvorbu bohatých okenných aplikácií. Bohatých je tu myslené vizuálne. JavaFX prináša podporu obrázkov, videa, hudby, grafov, CSS štýlov a ďalších technológií, ktoré zabezpečia, že výsledná aplikácia je naozaj pekná. Zároveň je kladený dôraz na jednoduchosť tvorby, všetky spomínané veci sú v JavaFX v základe. JavaFX sa hodí ako pre desktopové aplikácie, tak pre webové applety alebo mobilné aplikácie.
JavaFX vs. swing
JavaFX sa stala súčasťou štandardnej Javy vo verzii 8. Všetci dúfali, že postupom času nahradí Swing a zastane funkciu hlavného API pre desktop v Jave. V JavaFX síce vzniklo veľké množstvo nových aplikácií, firma Oracle sa však rozhodla jej vývoj ukončiť a odovzdať ho open-source komunite, ktorá postupne JavaFX vylepšuje. Novo sú oficiálne stránky openjfx.io. To ešte nie je problém. Horšie je, že od Javy verzie 11 už JavaFX nie je súčasťou JRE / JDK. Aby ste v nej mohli vyvíjať, je ju potrebné doinštalovať.
Ak ste začiatočníci a chcete vytvárať len nejaké jednoduché okenné aplikácie, je možno lepšie nápad použiť Swing. Ak chcete vytvoriť komplexnejší okenné aplikáciu v Jave, ste tu dnes správne
Inštalácia JavaFX
Aby sme s JavaFX mohli začať, musíme ju teda najprv manuálne nainštalovať. Alebo, čo je preferovanější spôsob, ju použiť ako ktorúkoľvek inú knižnicu. Pri použití JavaFX ako knižnice silne odporúčam používať Maven, alebo ešte lepšie grádl pre automatickú správu závislostí. Knižnice sa potom lepšie spravujú. Odkazy na tieto technológie vedú na alternatívne návody na inštaláciu JavaFX pre pokročilejších užívateľov.
JavaFX ako knižnica
V tomto úvodnom článku si ukážeme inštaláciu JavaFX ako knižnice pomocou IDE NetBeans, čo je pre začiatok najjednoduchšie. Ak vás zaujímajú ďalšie možnosti inštalácie alebo chcete rozumieť tomu, čo sa deje pod pokrievkou, pripravil som pre vás článok Manuálna inštalácia JavaFX.
Knižnice sú hostované na stránkach Maven central a sú rozdelené do nasledujúcich kategórií:
base
- definuje základné API pre JavaFX, binding, property, kolekcie a udalosticontrols
- zahŕňa všetky ovládacie prvky, ktorými JavaFX disponujefxml
- definuje FXML API pre JavaFXgraphic
- obsahuje hlavné API pre graf scény všetkých ovládacích prvkov (layouty, kontajnery, životný cyklus aplikácie, grafické tvary, transformácia, canvas, ošetrenie vstupu, kreslenie, spracovanie obrázkov), ďalej obsahuje API pre animácie, podporu CSS štýlov a ďalšiemedia
- obsahuje API pre prácu so zvukom a videomswing
- podpora pre swingové komponentyweb
- obsahuje API pre zobrazenie webových stránok za pomoci WebView komponenty
Pre minimálnu konfiguráciu budeme potrebovať celkom 3 knižnice:
base
, graphics
a controls
. Vytvorte si
novú zložku, do ktorej stiahnete tieto tri knižnice.
V Maven centrálnom repozitári nájdete požadované knižnice.
Vyberiete si požadovanú verziu. Je dôležité, aby ste mali rovnakú verziu pre všetky moduly JavaFX.
Cez odkaz "View all" si zobrazíte zoznam všetkých dostupných súborov, ktoré možno stiahnuť.
Stiahnite súbor ako sa zdrojovými kódmi (source), tak špecifický podľa operačného systému (Windows, Linux, MacOS).
NetBeans a JavaFX
NetBeans je k dispozícii v dvoch verziách:
- NetBeans 8 - Posledná verzia od Oracle
- NetBeans 10 - Novšie verzie, ktoré sa ujali ľudia zo skupiny The Apache Software Foundation
My budeme používať tú najnovšiu, teda verziu 10. Začneme Spustením NetBeans.
Vytvorenie projektu
V ľavej hornej časti v menu zvolíme File -> New Project.
V kategórii zvolíme Java az projektov vyberieme Java Application. Nesmiete vybrať kategóriu JavaFX, pretože potom by bolo NetBeans zmätené. Tlačidlom Next prejdeme na ďalšie okno.
Teraz zvolíme názov a umiestnenie projektu. Tlačidlom Finish dokončíme tvorbu nového projektu.
Projekt máme vytvorený, teraz je potrebné pridať JavaFX knižnice.
Pridanie JavaFX do NetBeans
Najskôr si stiahnuté JavaFX knižnice z predchádzajúcich krokov uložte niekam na bezpečné miesto, odkiaľ ich nebudete mazať. Budeme totiž vytvárať Globálne knižnicu pre NetBeans, ktorú budeme neskôr pridávať ku každému projektu, v ktorom budeme pracovať s JavaFX. V menu nájdeme záložku Tools a zvolíme položku Libraries.
V tomto okne klikneme na tlačidlo New Library pre založenie novej globálnej knižnice.
Knižnicu pomenujeme napríklad JavaFX a potvrdíme tlačidlom OK.
Teraz pridáme do novovytvorenej globálnej knižnice odkazy na JAR súbory knižnice JavaFX. Klikneme na tlačidlo Add Jar / Folder.
Vyberieme iba "binárne" súbory s knižnicou JavaFX. Nevyberajte súbory označené source, ktoré sme sťahovali skôr. Tlačidlom Add Jar / Folder potvrdíme súbory.
Tlačidlom OK zatvoríme dialóg s globálnymi knižnicami. Teraz musíme pridať túto globálnu knižnicu k nášmu projektu.
Pridanie JavaFX do projektu
Nad červeno označenú oblastí stlačíme pravé tlačidlo myši. Zobrazí sa nám veľký zoznam možností, čo možno s projektom urobiť. Nás bude zaujímať posledná položka Properties.
Otvorilo sa nám okno s vlastnosťami projektu. My sa najskôr musíme presunúť do záložky Libraries. Tu musíme nastaviť dve veci: Modulepath a CLASSPATH. Začneme nastavením Modulepath. Stlačíme červeno označené tlačidlo a zobrazí sa nám nové dialógové okno.
V tomto okne vyberieme našej globálnej JavaFX knižnicu a potvrdíme tlačidlom OK.
Teraz stlačíme druhé tlačidlo pre výber súborov, ktoré sa pripojí do CLASSPATH.
Opäť vyberieme iba "binárne" súbory, nie zdrojové. Tlačidlom OK všetko potvrdíme a dialóg zmizne.
Knižnicu máme pridanou, môžeme teda stlačiť tlačidlo OK pre uloženie zmien. Teraz sme úspešne pripojili JavaFX knižnicu do projektu.
Testovací projekt
Aby sme si všetko otestovali, vložíme do triedy Main
testovacie kód pre otestovanie funkčnosti. Pre istotu ho znova uvediem:
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class HelloNetbeans extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) throws Exception { String javaVersion = System.getProperty("java.version"); String javafxVersion = System.getProperty("javafx.version"); Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + "."); Scene scene = new Scene(new StackPane(l), 640, 480); stage.setScene(scene); stage.show(); } }
Teraz sa pokúsime projekt spustiť. Presunieme sa myšou opäť nad červeno vyznačenú oblasť, stlačíme pravé tlačidlo az ponuky vyberieme možnosť Run.
Projekt sa nepodarí skompilovať a IDE zobrazí nasledujúce hlášku:
Aby sme chybu odstránili, musíme sa presunúť opäť do nastavenia projektu, tentoraz ale do záložky Run.
Do červeno označeného miesta vložíme nasledujúci text:
--add-modules=javafx.controls
V budúcnosti budeme nepochybne potrebovať pridať ešte
ďalšie časti JavaFX knižnice. Pre pridanie upravíte globálnej knižnicu,
pridáte súbory a do textu výšky pridáte nový modul, napr .:
javafx.controls
. Jednotlivé moduly sa oddeľujú znakom
,
.
Tlačidlom OK potvrdíme a projekt znovu spustíme. Teraz už všetko prebehne hladko a aplikácie sa spustí.
Gratulujem, podarilo sa vám sprevádzkovať JavaFX na vašom počítači. V budúcej lekcii, FXML a prvé formulárové aplikácie v JavaFX , si ukážeme, ako v IDE NetBeans vytovřit novú JavaFX aplikáciu.