4. díl - Upomínač narozenin v Java Swing - Návrh formulářů

Java Swing Upomínač narozenin v Java Swing - Návrh formulářů

V minulém dílu seriálu tutoriálů o tvorbě formulářových aplikací v Java Swing jsme se naučili obsluhovat události a vytvořili jednoduchou kalkulačku. V dnešním dílu začneme pracovat na aplikaci k upomínání narozenin přátel. Aplikace bude vypadat následovně:

Aplikace na upomínání narozenin v Java Swing

Vytvoříme si novou Java aplikaci bez hlavní třídy s názvem Vyroci.

Návrh formuláře

Jako vždy začneme návrhem formuláře. Tentokrát již budeme mít v aplikaci dva.

Přehledový formulář

Přehledový formulář je základní okno aplikace s přehledem osob a jejich narozenin. K projektu přidáme nový JFrame Form, pojmenovaný PrehledJFrame. Nastavíme mu titulek na Výročí. Kód v jeho metodě main upravíme tak, aby se formulář zobrazoval centrovaný:

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

Mimochodem, všimněte si, že se formuláře pojmenovávají PascalCasem (první písmeno velké) a komponenty camelCasem. Je to proto, že formulář je třída a komponenty jsou instance.

Dále budeme potřebovat následující komponenty:

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

Labely rozmístěte jako na obrázku výše. Labelům na levé straně nastavíme text podle obrázku. Labelům na straně pravé text nastavovat nebudeme, ale nastavíme jim jméno, abychom text mohli později nastavit z kódu. Labely na pravé straně se budou jmenovat: dnesJLabel, nejblizsiJLabel, narozeninyJLabel, vekJLabel.

Tlačítka

Dva JButtony umístíme dolů a nastavíme jim text na Přidat a Odebrat. Asi vás nepřekvapí, že jejich názvy budou pridatJButton a odebratJButton. Tlačítkům můžeme přidat nějaké ikony, já jsem ty na obrázku našel na http://www.iconfinder.com, velikost je 32x32 pixelů. Obrázek nastavíme pomocí vlastnosti Icon, kde klikneme na tlačítko "...". Obrázek nyní můžeme naimportovat z projektu nebo nahrát z externího umístění. Vybereme External image a zvolíme příslušný obrázek z disku.

JList

JList je v podstatě rozbalený JComboBox, se kterým jsme se seznámili v minulé lekci. Jinak funguje úplně stejně a my ho využijeme pro zobrazení seznamu osob. List pojmenujeme osobyJList.

Přidávací formulář

Druhý formulář bude sloužit k přidávání nových osob a bude mít následující podobu:

Dialog pro přidání nové osoby v Java Swing

Formulář tentokrát nepřidáme k projektu jako JFrame Form, ale jako JDialog Form. Pokud v menu tuto možnost nemáte, musíte zvolit Other... a poté v sekci Swing GUI Forms vybrat právě jDialog Form.

Rozdíl mezi dialogem a formulářem je ten, že dialog je chápán jako jednoúčelový pomocný formulář, který slouží většinou k zadání určitých dat a poté se zas zavře. Z tohoto důvodu můžeme JDialog na rozdíl od JFrame označit jako modální. Modální dialog se zobrazí v popředí aplikace a celá aplikace následně čeká, až se zavře. To je velmi užitečné, můžeme tak např. zobrazit dialog k přidání osoby a poté obnovit vypsanou osobu. Po zobrazení modálního dialogu metoda čeká, až se zavře a teprve poté pokračuje dále, v našem případě tedy obnoví vypsanou osobu. Kdyby formulář nebyl modální, nedokázali bychom na jeho uzavření dost dobře reagovat. Někdy se nám také prostě jen hodí, že s aplikací nelze manipulovat se zobrazeným dialogem nebo že nelze zobrazit více dialogů najednou.

Dialog pjmenujeme OsobaJDialog, titulek nastavíme na "Přidat osobu". NetBeans vám do zdrojového kódu JDialogu pravděpodobně vygeneroval metodu main, tu potřebovat nebudeme a tak ji celou odstraníme.

Do dialogu dále vložíme následující kontrolky:

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

Dva JLabely zde slouží jen k popisu textových polí, čili jim pouze nastavte text podle obrázku výše a nemusíte je ani pojmenovávat. Třetí label slouží k zobrazení ikony nového uživatele, aby byl náš formulář uživatelsky přívětivější. Ikonu JLabelu nastavíte opět přes vlastnost icon. Text tomuto labelu vymažte, aby se nezobrazoval.

JTextField

JTextField je jak asi tušíte pole, kam může uživatel aplikace zadat libovolný text. K účelu zadání jména je ideální. Někteří začátečníci ho používají i k zadávání čísel nebo datumů, což je ovšem špatně, jak jsme si již vysvětlili minule. TextField pojmenujte jmenoJTextField.

JFormattedTextField

Komponenta JFormattedTextField umožňuje zadat text podobně jako JTextField, ale udržuje určitý předepsaný formát. Pokud poté z programu čteme to, co uživatel zadal, je nám vždy vrácen smysluplný vstup.

Komponentu pojmenujeme narozeninyJFor­mattedTextField a přesuneme se do nastavení její vlastnosti formatterFactory.

Nastavení JFormattedTextField v Java Swing

Naleznete zde mnoho předpřipravených formátů pro zadávání čísel, data a času, procent a měny. My využijeme možnost custom z kategorie date, kam zadáme následující formát:

d.M.yyyy

Tím jsme určili, že se do TextFieldu bude zadávat datum ve formátu den.měsíc.rok. Formát lze vždy otestovat tlačítkem Test. Po potvrzení si komponenta sama hlídá zadaný formát a i když uživatel zadá nějaký nesmysl, např. 13. měsíc, vrátí vždy smysluplnou hodnotu.

JButton

Tlačítko k potvrzení dialogu pojmenujeme okButton a nastavíme mu text na OK.

Až aplikaci spustíte, nezapoměňte nastavit jako hlavní formulář prehledJFrame.

Formuláře máme připravené, v příští lekci si vytvoříme třídy s logikou aplikace. Naklikané formuláře jsou ke stažení níže.


 

Stáhnout

Staženo 423x (30.92 kB)
Aplikace je včetně zdrojových kódů v jazyce java

 

  Aktivity (1)

Článek pro vás napsal David Čápka
Avatar
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Jak se ti líbí článek?
Celkem (1 hlasů) :
333 33


 



 

 

Komentáře

Avatar
tomkrata
Člen
Avatar
tomkrata:

Mám takový problém. Když dám ikonu do tlačítka tak je vidět bílé pozadí. Nevíš prosím jak to odstranit? :D

 
Odpovědět 6.12.2013 17:48
Avatar
B42P6
Člen
Avatar
B42P6:

Zdravím, mám Pár otázok k Swingu a Netbeans.

1.Dá sa nejakým spôsobom meniť veľkosť tej ikony priamo v Design Editore?
2.Je v nastaveniach (v Netbeans) možnosť povoliť úpravy zašedlého kódu (napr. v Kóde JFrame-u)

Odpovědět 11.8.2015 16:03
'long long long' is too long for GCC
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 2 zpráv z 2.