Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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 Java Swing - Návrh formulárov

V predchádzajúcom cvičení, Riešené úlohy k 1.-3. lekciu Java Swing, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

V minulom dieli seriálu tutoriálov o tvorbe formulárových aplikácií v Java Swing sme sa naučili obsluhovať udalosti a vytvorili jednoduchú kalkulačku. V dnešnom dieli začneme pracovať na aplikáciu k upomínania narodenín priateľov. Aplikácia bude vyzerať nasledovne:

Aplikácia na upomínania narodenín v Java Swing - Základy Java Swing

Vytvoríme si novú Java aplikáciu bez hlavnej triedy s názvom Vyroci.

Návrh formulára

Ako vždy začneme návrhom formulára. Tentoraz už budeme mať v aplikácii dva.

Prehľadový formulár

Prehľadový formulár je základná okno aplikácie s prehľadom osôb a ich narodenín. K projektu pridáme nový JFrame Form, pomenovaný PrehledJFrame. Nastavíme mu titulok na Výročie. Kód v jeho metóde main upravíme tak, aby sa formulár zobrazoval centrovaný:

public void run() {
    PrehledJFrame prehledJFrame = new PrehledJFrame();
    prehledJFrame.setLocationRelativeTo(null);
    prehledJFrame.setVisible(true);
}

Mimochodom, všimnite si, že sa formuláre pomenúvajú PascalCasem (prvé písmeno veľké) a komponenty CamelCase. Je to preto, že formulár je trieda a komponenty sú inštancie.

Ďalej budeme potrebovať nasledujúce komponenty:

  • 8x JLabel
  • 2x JButton
  • 1x JList

Labely

Labely rozmiestnite ako na obrázku vyššie. Labelům na ľavej strane nastavíme text podľa obrázka. Labelům na strane pravej text nastavovať nebudeme, ale nastavíme im meno, aby sme text mohli neskôr nastaviť z kódu. Labely na pravej strane sa budú menovať: dnesJLabel, nejblizsiJLabel, narozeninyJLabel, vekJLabel.

Tlačidla

Dva JButton umiestnime dole a nastavíme im text na Pridať a Odstrániť. Asi vás neprekvapí, že ich názvy budú pridatJButton a odebratJButton. Tlačidlám môžeme pridať nejaké ikony, ja som tie na obrázku našiel na http://www.iconfinder.com, veľkosť je 32x32 pixelov. Obrázok nastavíme pomocou vlastnosti Icon, kde klikneme na tlačidlo "...". Obrázok teraz môžeme naimportovať z projektu alebo nahrať z externého umiestnenia. Vyberieme External imidž a zvolíme príslušný obrázok z disku.

JList

JList je v podstate rozbalený JComboBox, s ktorým sme sa zoznámili v minulej lekcii. Inak funguje úplne rovnako a my ho využijeme pre zobrazenie zoznamu osôb. List pomenujeme osobyJList.

Pripájací formulár

Druhý formulár bude slúžiť na pridávanie nových osôb a bude mať nasledujúce podobu:

Dialóg pre pridanie novej osoby v Java Swing - Základy Java Swing

Formulár tentoraz nepridáme k projektu ako JFrame Form, ale ako JDialog Form. Ak v menu túto možnosť nemáte, musíte zvoliť Other ... a potom v sekcii Swing GUI Forms vybrať práve JDialog Form.

Rozdiel medzi dialógom a formulárom je ten, že dialóg je chápaný ako jednoúčelový pomocný formulár, ktorý slúži väčšinou k zadaniu určitých dát a potom sa zas zavrie. Z tohto dôvodu môžeme JDialog na rozdiel od JFrame označiť ako modálne. Modálne dialóg sa zobrazí v popredí aplikácie a celá aplikácia následne čaká, až sa zavrie. To je veľmi užitočné, môžeme tak napr. Zobraziť dialóg na pridanie osoby a potom obnoviť vypísanú osobu. Po zobrazení modálneho dialógu metóda čaká, až sa zavrie a až potom pokračuje ďalej, v našom prípade teda obnoví vypísanú osobu. Keby formulár nebol modálne, nedokázali by sme na jeho uzavretie dosť dobre reagovať. Niekedy sa nám tiež proste len hodí, že s aplikáciou nemožno manipulovať so zobrazeným dialógom alebo že nemožno zobraziť viac dialógov naraz.

Dialóg pjmenujeme OsobaJDialog, titulok nastavíme na "Pridať osobu". NetBeans vám do zdrojového kódu JDialogu pravdepodobne vygeneroval metódu main, tú potrebovať nebudeme a tak ju celú odstránime.

Do dialógu ďalej vložíme nasledujúce komponenty:

  • 3x JLabel
  • 1x JTextField
  • 1x JFormattedTextField
  • 1x JButton

JLabel

Dva JLabel tu slúži len na opis textových polí, čiže im iba nastavte text podľa obrázku vyššie a nemusíte ich ani pomenovávať. Tretí label slúži na zobrazenie ikony nového používateľa, aby bol náš formulár užívateľsky prívetivejšie. Ikonu JLabel nastavíte opäť cez vlastnosť icon. Text tomuto labelu vymažte, aby sa nezobrazoval.

JTextField

JTextField je ako asi tušíte pole, kam môže užívateľ aplikácie zadať ľubovoľný text. O účele zadanie mena je ideálne. Niektorí začiatočníci ho používajú aj k zadávanie čísel alebo dátumov, čo je však zle, ako sme si už vysvetlili minule. TextField pomenujte jmenoJTextField.

JFormattedTextField

Komponenta JFormattedTextField umožňuje zadať text podobne ako JTextField, ale udržuje určitý predpísaný formát. Ak potom z programu čítame to, čo používateľ zadal, je nám vždy vrátený zmysluplný vstup.

Komponent pomenujeme narozeninyJFor­mattedTextField a presunieme sa do nastavenia jej vlastnosti formatterFactory:

Nastavenie JFormattedTextField v Java Swing - Základy Java Swing

Nájdete tu mnoho predpripravených formátov pre zadávanie čísel, dátumu a času, percent a meny. My využijeme možnosť custom z kategórie date, kam zadáme nasledujúci formát:

d.M.yyyy

Tým sme určili, že sa do TextField bude zadávať dátum vo formáte deň.mesiac.rok. Formát možno vždy otestovať tlačidlom Test. Po potvrdení si komponenta sama stráži zadaný formát a aj keď používateľ zadá nejaký nezmysel, napr. 13. mesiac, vráti vždy zmysluplnú hodnotu.

JButton

Tlačidlo na potvrdenie dialógu pomenujeme okButton a nastavíme mu text na OK.

Až aplikáciu spustíte, nezabudnite nastaviť ako hlavný formulár prehledJFrame.

Formuláre máme pripravené, v budúcej lekcii si vytvoríme triedy s logikou aplikácie. Naklikané formuláre sú k stiahnutiu nižšie.


 

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é 631x (16.18 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java

 

Predchádzajúci článok
Riešené úlohy k 1.-3. lekciu Java Swing
Všetky články v sekcii
Základy Java Swing
Preskočiť článok
(neodporúčame)
PRIPOMIENKOVÉ narodenín v Java Swing - Logická vrstva
Č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