Presentation is loading. Please wait.

Presentation is loading. Please wait.

GUI Swing postupná tvorba aplikácie s dizajnom základné komponenty

Similar presentations


Presentation on theme: "GUI Swing postupná tvorba aplikácie s dizajnom základné komponenty"— Presentation transcript:

1 GUI Swing postupná tvorba aplikácie s dizajnom základné komponenty
TextField Button CheckBox RadioButton ComboBox List

2 NetBean IDE GUI Builder
umožňuje tvorbu prostredia prostredníctvom drag&drop všetok potrebný kód generuje automaticky skúsenejší/preferujúci manuálnu tvorbu kódu nemusia používať grafické prostredie a automaticky generovaný kód – všetko možno tvoriť aj manuálne 2

3 Úvodný príklad Vytvorte EURO-kalkulačku. Napíšte program, ktorý prevedie zadanú sumu v EURO na slovenské koruny. 3

4 Po krokoch ... štandardným spôsobom vytvoríme nový projekt 4

5 ... po krokoch ... zadáme názov projektu
zabezpečíme, aby nebolo odsuhlasené vytvorenie main classu 5

6 ... po krokoch ... vytvorí sa „nejaký“ zdrojový kód,
momentálne nie je zaujímavý do projektu vložíme JFrame – frame / okno / kontajner pre ďalšie komponenty 6

7 ... po krokoch ... zadáme názov vytváraného formulára a odsúhlasíme 7

8 ... výsledok získali sme formulár, na ktorý môžeme umiestňovať ďalšie swingové komponenty 8

9 Hotová aplikácia už v tomto momente však máme hotovú aplikáciu, ktorá po spustení dokáže: meniť svoje rozmery maximalizovať a minimalizovať sa zavrieť sa má k dispozícii všetky prvky okna operačného systému 9

10 Popis prvkov „nového“ prostredia
nový vzhľad prostredia si od nás vyžaduje popis jeho častí 10

11 Popis prvkov „nového“ prostredia
pracovná plocha dáva k dispozícii priestor na umiestňovanie komponentov predstavuje okno aplikácie paleta komponentov poskytuje zoznam komponentov, ktoré možno umiestniť na formulár a používať (spočiatku nám ich postačí len niekoľko málo) editor vlastností umožňuje zmeniť vlastnosti komponentov vložených na formulár zdrojový kód poskytuje okrem kódu, ktorý doň vložíme aj riadky, ktoré vygeneruje systém na základe manipulácie s komponentami zatiaľ pre nás nemusí byť zrozumiteľný prepínanie cez View – Editors – Source/Design 11

12 Návrh dizajnu začneme definovaním parametrov formulára
kliknutím na formulár zabezpečíme, aby v editore vlastností boli zobrazené práve tie jeho nastavením vlastnosti Title určíme text titulného pruhu okna 12

13 Vloženie komponentov následne povkladáme nasledovné komponenty:
JLabel popisné pole do vlastnosti text vložíme popisok, napr. „Zadaj sumu v EURO:“ JTextField na zadávanie sumy v eurách textové pole, do ktorého možno písať vlastnosť text nastavíme na prázdnu a vhodne upravíme veľkosť poľa JButton na prikázanie operácie prepočtu vlastnosť text nastavíme napr. na „Prepočítaj“ pre výpis výslednej hodnoty môžeme použiť opäť JLabel zmeníme mu veľkosť (prípadne aj font) na záver možno upraviť manuálne rozmery formulára 13

14 Programovanie dizajn máme hotový – aplikácia však okrem zobrazenia nedokáže nič pokiaľ chce používateľ komunikovať so swing-komponentami, musí tak urobiť prostredníctvom vykonania nejakej udalosti (klik na komponent, pohyb myšou, stlačenie klávesu a pod.) aplikácia vlastne len ticho beží a čaká na vznik udalosti keď udalosť nastane, vykoná sa príslušný kód tento spôsob programovania sa označuje ako udalosťami riadené programovanie 14

15 Udalosti existuje viac typov udalostí, často sú udalosti typické len pre niektoré komponenty v našom prípade potrebujeme udalosť, ktorá nastane pri kliknutí myšou na tlačidlo „Prepočítaj“ a akoby to nebolo dosť, rovnakú aktivitu by sme očakávali aj pri stlačení buttonu klávesnicou na tento účel máme v zozname udalostí (Events v kontextovom menu pre príslušný button) k dispozícii skupinu Action a udalosť actionPerformed. 15

16 Ošetrenie udalosti týmto výberom sa vytvorí v kóde metóda, do ktorej doplníme požadovanú funkcionalitu: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){ // precita sa text z komponentu textField String ret = jTextField1.getText(); // skonvertuje sa na cislo int Euro = Integer.parseInt(ret); // vykona sa prepocet double Sk = Euro * ; // konverzia a vlozenie do jLabel2 jLabel2.setText(Double.toString(Sk)); } 16

17 Ďalšie komponenty Checkbox RadioButton ComboBox Listbox
zaškrtávacie políčko (zapnutý/vypnutý niekedy nerozhodný) RadioButton výber jednej zo skupiny možností ComboBox rozbaľovacie tlačidlo rozbalenie a výber zo zoznamu Listbox viditeľný zoznam výber jednej alebo viac položiek 17

18 CheckBox Napíšte aplikáciu, ktorá vypočíta používateľovi vek, ktorého sa dožije na základe položených otázok. Otázky formulujte tak, aby na ne bolo možné odpovedať áno/nie a na zistenie odpovedí použite checkboxy. 18

19 Riešenie 1 int vek = 100; // predpokladajme optimalny vek
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { int vek = 100; // predpokladajme optimalny vek // isSelected podava info o zaskrtnuti if (jCheckBox1.isSelected()) vek = vek - 5; if (jCheckBox2.isSelected()) vek = vek - 5; if (jCheckBox3.isSelected()) vek = vek + 3; if (jCheckBox4.isSelected()) vek = vek + 1; jLabel1.setText(Integer.toString(vek)); } 19

20 RadioButton Na základe výberu jazyka privítajte používateľa vo vašom programe. zapnutie prvého RB riešime cez vlastnosť selected v editore vlastností 20

21 Riešenie 2 // východzia hodnota String pozdrav = "Dobrý deň";
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // východzia hodnota String pozdrav = "Dobrý deň"; if (jRadioButton2.isSelected()) pozdrav="Good morning"; if (jRadioButton3.isSelected()) pozdrav="Guten morgen"; if (jRadioButton4.isSelected()) pozdrav="Zdravstvujte"; // výpis pozdravu JOptionPane.showMessageDialog(null, pozdrav);} 21

22 Problém riešenie sa správa zvláštne: umožňuje zapnúť viac RB naraz
vyzerá to na nutnosť manuálneho vypínania RB private void jRadioButton2ActionPerformed(java.awt.event.ActionEvent evt) { jRadioButton1.setSelected(false); jRadioButton3.setSelected(false); jRadioButton4.setSelected(false); } 22

23 Efektívnejšie riešenie
ButtonGroup vytvorí z tlačidiel skupinu tak, že zapnuté bude vždy len jedno treba však upraviť kód na mieste vzniku formulára (po inicializácii/vytvorení komponentov) public NewJFrame() { initComponents(); // vytvorí sa skupina ButtonGroup bg = new ButtonGroup(); // a pridaju sa do nej všetky RB bg.add(jRadioButton1); bg.add(jRadioButton2); bg.add(jRadioButton3); bg.add(jRadioButton4); } 23

24 ComboBox Vyberte zo zoznamu (opäť jazykov) jeden a na základe výberu pozdravte. využijeme vlastnosť model prostredníctvom ktorej naplníme CMB 24

25 Riešenie reakciu možno naprogramovať po kliknutí na tlačidlo ... }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String pozdrav = "Dobry den"; // porovnam vybrany text s anglicky if(jCMB1.getSelectedItem().toString().compareTo("anglicky") == 0) pozdrav = "Good morning"; if (jCMB1.getSelectedItem().toString().compareTo("nemecky") == 0) pozdrav = "Guten morgen"; // alebo pokial mam nemenny cmb, mozem len pozriet ktory index bol vybrany if (jCMB1.getSelectedIndex() == 3) pozdrav ="Zdravstvujte"; // vdaka parametru rootpane sa okno nezobrazi v strede obrazovky ale v strede nasej aplikacie JOptionPane.showMessageDialog(rootPane, pozdrav); } 25

26 Riešenie 2 ... alebo hneď po výbere v comboboxe (akcia Performed pre cmb) 26

27 List asi najzaujímavejší komponent
umožňuje zobrazenie zoznamu tak, že ho aj celý vidieť Napíšte program, ktorý umožní ukladať a mazať zoznam čakateľov u lekára. Pravidlá na vybavovanie existujú, avšak ani pacienti ani vy ich nepoznáte = umožnite pridávať na koniec a mazať ktorýkoľvek označený záznam. 27

28 Riešenie dynamická práca so zoznamom si vyžaduje niekoľko nastavení:
v prvom rade je potrebné disponovať zoznamom prvkov, ktoré budú zobrazované v jListe – vyžaduje sa ListModel (zoznam v pamäti, ktorý sa do komponentu len zobrazuje) deklarujeme (resp. vytvoríme) premennú tohto typu ako premennú s platnosťou v celom programe: public class Lekar extends javax.swing.JFrame { DefaultListModel zoznam = new DefaultListModel(); následne po vytvorení (inicializácii) komponentov prepojíme zoznam s jListom: public Lekar() { initComponents(); jList1.setModel(zoznam); } 28

29 Pridanie následne ošetríme udalosť pre pridanie prvku:
// zistim pocet prvkov int pocet = zoznam.size(); // pridam hodnotu z textoveho pola na koniec zoznamu zoznam.insertElementAt(jTextField1.getText(),pocet); // textove pole vyprazdnim jTextField1.setText(""); 29

30 Vymazanie a udalosť pre vymazanie aktuálneho prvku:
// zistim index prvku, na ktorom som nastaveny int index = jList1.getSelectedIndex(); // ak nie som na prazdnom tak mam hodnotu 0 a viac if (index>-1) zoznam.remove(index); // riadok vymazem 30

31 Úlohy Pridajte do úlohy s Listboxom kontrolu, či sa v zozname už zadané meno nenachádza (hodnotu z riadku listboxu najdete ako zoznam.get(i)). Zabezpečte vyhodenie všetkých pacientov: so zadaným menom ktorých meno začína na zadaný text ktorých meno obsahuje zadaný text Naprogramujte jednoduchú kalkulačku: dve čísla zadávané do textového poľa a operácie súčtu, súčinu a rozdielu medzi nimi. pridajte podiel s ošetrením delenia nulou pridajte možnosť výberu výpočtu reálneho a celočíselného podielu so zvyškom Pre List vytvorte aparát na pridávanie a mazanie číselných hodnôt. Naprogramujte funkciu, ktorá párne čísla zdvojnásobí a nepárne zníži o 3. Pre List vytvorte aparát na pridávanie a mazanie. Preneste údaje do druhého Listu tak, aby v ňom boli usporiadané. Do školského basketbalového tímu prijímajú hráčov. Napíšte program, ktorý dokáže evidovať ich meno a výšku (v jednom alebo aj dvoch Listoch) údaje umožnite uložiť a načítať zo súboru pridajte funkciu, ktorá nájde najvyššieho žiaka a jeho náhradníka (t.j. druhý najvyšší). Pre text zadaný v textovoom poli zistite počet výskytov jednotlivých znakov a vypíšte ich do Listu. 31


Download ppt "GUI Swing postupná tvorba aplikácie s dizajnom základné komponenty"

Similar presentations


Ads by Google