IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

4. diel - PRIPOMIENKOVÉ narodenín v JavaFX - Návrh formulára

V minulej lekcii, Jednoduchá kalkulačka v JavaFX , sme si naprogramovali jednoduchú kalkulačku. V dnešnom tutoriále začneme tvorbu zložitejšie aplikácie, ktorá bude slúžiť na upomínania narodenín priateľov.

Návrh formulára

Začneme tradične s návrhom formulára. Poriadne si pri tom zaklikáme a preto som sa snažil do článku vložiť čo najviac obrázkov, aby ste si mohli kontrolovať, že postupujete správne. Vysvetlime si však najprv absolútnu a relatívnu pozicovanie.

Absolútna pozíciovanie

V minulej aplikácii sme si formulár naklikali tak, ako nás to napadlo. Jednotlivé komponenty sme umiestnili presne na určitú pozíciu na formulári. Tomuto prístupu sa hovorí absolútna pozicovanie. Jeho nevýhodou je, že aplikácia potom nereaguje na rozšírenie okna. Drvivá väčšina aplikácií má preto komponenty na formulári pozicovanie relatívne.

Relatívna pozíciovanie

Pokiaľ má komponent relatívnu pozíciu, znamená to, že sa táto pozícia vzťahuje k nejakej inej komponente, v ktorej je vložená. Nejedná sa teda priamo o pozíciu v hlavnom okne, ale o pozíciu v nadradenej komponente. V Library v JavaFX Scene Builderu nájdeme širokú ponuku tzv. Kontajnerov. To sú komponenty, do ktorých sa vkladajú ďalšie komponenty. Práve z nich formulár poskladáme a vo výsledku docielime kvalitného uspôsobenie veľkosti okna. To je v dnešnej dobe veľmi dôležité, pretože aplikáciu môžeme cieliť na telefóny, tablety alebo stolný PC. Vďaka prenositeľnosti Javy bude fungovať tá istá aplikácie všade a vďaka relatívnemu pozicovanie použijeme na každom zariadení ten istý formulár, aj keď veľkosti displejov sú rôzne.

Príprava layoutu

V relatívnom pozíciovanie sa často o rozloženie prvkov na formulári hovorí ako o layoutu. Poďme si ho vytvoriť. Vytvorte si novú JavaFX FXML Application a pomenujte ju UpominacNarozenin. Rovno si na začiatku ukážme, ako bude výsledný formulár aplikácie vyzerať:

Formulár PRIPOMIENKOVÉ narodenín v JavaFX - Okenné aplikácie v Java FX

Nový FXML dokument si rovno otvoríme v JavaFX Scene Builder a odstránime z neho vygenerovaný Button a Label.

VBox

Ako prvý do formulára vložíme VBox. To je kontajner, do ktorého môžeme vkladať ďalšie komponenty. Tieto komponenty sa radia pod seba (vertikálne).

VBox roztiahne po celom formulári a v Inspector v záložke Properties nastavte Alignment na CENTER. Tým sa budú komponenty vložené vo VBoxu centrovať. Prejdite do záložky Layout. Komponente tu nastastavíme kotvy a okraje.

Kotvy

Kotvy (Anchors) určujú ako sa komponenta prichytáva k okrajom rodičovskej komponenty. Rodičovská komponenta je tá komponenta, v ktorej je vložená, v našom prípade je to formulár (presnejšie AnchorPane). My budeme chcieť, aby sa VBox prichytil ku všetkým štyrom okrajom formulára. Keď budeme formulár rozťahovať, bude sa rozťahovať aj VBox. Jednotlivé kotvy aktivujeme kliknutím na príslušnú prerušovanou čiaru na obrázku dvoch štvorcov. Do políčok TOP, RIGHT, BOTTOM, LEFT vložte samé nuly. VBox tak bude tesne prilepený k okraju formulára.

Kotvy v JavaFX Scene Builderu - Okenné aplikácie v Java FX

Okraje

Okraje určujú veľkosť voľného miesta. Môžeme nastaviť Padding, čo je voľné miesto okolo obsahu komponenty. Ďalej tiež Spacing, čo je voľné miesto medzi komponentmi, ktoré sú vo VBoxu vložené.

Všetky okraje nastavíme na hodnotu 20. Výsledkom bude, že na sebe nebudú komponenty nalepené, čo by nevyzeralo dobre.

Padding v JavaFX Scene Builder - Okenné aplikácie v Java FX

Náš formulár zatiaľ vyzerá takto:

Tvorba formulára JavaFX aplikácie - Okenné aplikácie v Java FX

GridPane

Na zobrazenie dnešného dátumu a najbližších narodenín použijeme 4 labelom. Aby boli pekne usporiadané, vložíme ich do GridPane. To je ďalší kontajner, ktorý komponenty radí do tabuľky.

GridPane vložíme do VBoxu. Ako východiskový má vždy 2 stĺpce a 3 riadky. Nám stačí tabuľka 2x2 a preto posledný riadok označíme kliknutím na modrej číslo 2 a klávesou delete ho odstránime. Ak by sme v nejakej aplikácii naopak chceli riadok alebo stĺpec pridať, urobíme to pomocou kontextového menu (klikneme na GridPane pravým tlačidlom).

Alignment nastavíme na CENTER, v záložke Layout nastavíme Min Height (minimálna výšku) na 60. Následne oboma stĺpcom tabuľky nastavíme Max Width na 150. Stĺpec označíme vždy kliknutím na jeho modrej číslo.

Náš Grid Pane teda bude široký maximálne 300 a vysoký minimálne 60.

Do každej bunky GridPane pretiahnite jeden Label a nastavte im texty podľa obrázku:

Tvorba formulára JavaFX aplikácie - Okenné aplikácie v Java FX

HBox

Ako druhú komponent do VBoxu vložíme HBox. Ten sa používa pre radenie komponentov vedľa seba (horizontálne). V záložke Layout mu nastavíme Spacing na 10 a Vgrow na Sometimes. Pomocou Vgrow tak nastavíme, aby sa HBox rozťahoval na výšku s formulárom.

ListView

Ako prvý komponent do HBoxu vložíme ListView. To je jednoduchý zoznam položiek, my ho budeme používať pre zobrazenie zoznamu priateľov. ListView nastavíme Pref Height aj Pref Width na hodnotu USE_COMPUTED_SIZE a Hgrow na Sometimes. Bude sa tak rozťahovať čo najviac to pôjde. Rodičovskému HBoxu nastavíme to isté.

Ako druhú komponent do HBoxu vložíme ďalšej GridPane. Ten bude opäť 2x2 (2 stĺpce a 2 riadky). Pretože nechceme, aby sa rozťahoval po celej výške, nastavíme mu v záložke Layout Max Height na 60. Do každej bunky vložíme Label s textom podľa obrázku:

Tvorba formulára JavaFX aplikácie - Okenné aplikácie v Java FX

Ako posledný komponent do VBoxu vložíme ďalšej HBox sa Spacing 10. V záložke Properties mu nastavíme Alignment na CENTER. Tým sa budú položky v ňom vložené centrovať. V ňom budú obsiahnuté 2 tlačidlá (button). Tlačidlám nastavíme texty podľa obrázka a Pref Width (v záložke Layout) na 70. Budú tak rovnako široká.

Patrilo by sa dodať, že Pref Width je synonymum pre šírku. Tá je označená ako Preferred, pretože sa od skutočnej šírky komponenty môže líšiť. Napr. keď nastavíme preferovanú šírku na 70 a formulár zmenšíme na 60, výška sa nutne zníži s ním (tlačidlo nemôže byť širší, než formulár, pokiaľ však nemá nastavenú minimálnu šírku, to by sa zmenšenie formulára na takú veľkosť nepovolilo).

Tvorba formulára JavaFX aplikácie - Okenné aplikácie v Java FX

Náš formulár máme hotový. Skúste si aplikáciu spustiť a formulár roztiahnuť, jeho obsah sa veľkosti okna prispôsobuje. (Pred spustením musíte uložiť scénu v JavaFX Scene Builderu az kontroleru vymazať atribúty a metódy s @FXML anotáciou, ktoré tam zostali po východiskovým projektu)

Tvorba formulára JavaFX aplikácie - Okenné aplikácie v Java FX
Tvorba formulára JavaFX aplikácie - Okenné aplikácie v Java FX

Pre prípad, že sa vám niečo nepodarilo, si ho môžete stiahnuť nižšie a nájsť si chybu. V budúcej lekcii, PRIPOMIENKOVÉ narodenín v JavaFX - Formuláre druhýkrát , naprogramujeme základ logické vrstvy aplikácie.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 478x (6.05 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

 

Predchádzajúci článok
Jednoduchá kalkulačka v JavaFX
Všetky články v sekcii
Okenné aplikácie v Java FX
Preskočiť článok
(neodporúčame)
PRIPOMIENKOVÉ narodenín v JavaFX - Formuláre druhýkrát
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity