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:
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:
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 narozeninyJFormattedTextField a presunieme sa do nastavenia jej vlastnosti formatterFactory:
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é 640x (16.18 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Java