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

Slides:



Advertisements
Similar presentations
Ma.
Advertisements

Click on each of us to hear our sounds.
ma mu mi mo me pe pi pa pu po si sa so.
MA. ME MI MO MU MÁ MÉ MÍ MÓ MŮ LA LE LI.
Slovak HEROINE Comenius project
Požiadavky na hardvér a možnosti použitia jednotlivých OS Windows
Example Bullet Point Slide
Fyzika a chemie společně CZ/FMP/17B/0456
Inteligentné mapy Marek Doršic.
VOĽNE DOSTUPNÝ REFERENČNÝ MANAŽÉR
Stredná odborná škola automobilová Moldavská cesta 2, Košice
Renesancia a humanizmus
Zmluva o poskytnutí grantu
Prečo šimpanzy nevedia rozprávať?
Zálohovanie a archivácia
Operačné systémy Čo robí operačný systém ?
Obsluha výnimiek.
Java Collections Framework
Geografický informačný systém
Domény a DNS.
Programovanie geofyzikálnych úloh v prostredí MATLAB
Vývoj a druhy počítačov
Web of Science – pokročilé vyhľadávanie vedeckej literatúry a jej analýza Enikő Tóth Szász Customer Education Specialist
DATABÁZOVÉ JAZYKY.
Bezpečnosť JAVA technológií
Úloha diabetológa 1 Pôsobiť ako „bútľavá vŕba“ a často vedieť viac ako rodičia, im prefiltrovať iba najzávažnejšie informácie Mať vedomosti o aktivitách.
Databázový systém pre malý a veľký podnik
Yulia Šurinová "There is always a better way; it should be found."
Programovací jazyk programovací jazyk Pascal Delphi
Makrá v PowerPointe Joshua Lajčiak.
Barbora Ondíková VII.D 2014/2015
Schémy financovania v 7RP
Vytvorenie bázy športových motívov, priestorov a hodnôt ich expozície.
Človek vo sfére peňazí ročník.
aktivácia Vladimír Hricka License Sales Specialist Microsoft Slovakia
7. prednáška 3. november 2003.
Protokoly HTTP a FTP.
Implementácia IKT do odborného školstva výsledky projektu
Mgr. Valentína Gunišová
Techniky parsimonickej analýzy pre veľké dátové súbory
Využitie IKT na hodinách anglického jazyka
Výučba cudzích jazykov
Ako sme pristúpili k citlivej téme migrácie v našej škole
Skrutkovica na rotačnej ploche
Vlastnosti kvantitatívnych dát
Ing. Róbert Chovanculiak, Ph.D. INESS
História vzniku internetu
Šifrovanie Dešifrovanie
Ako manažovať smartfóny z cloudu TechDays East 2014
CSS - Cascading Style Sheets
Dvojrozmerné polia Kód ITMS projektu:
Lokálne príznaky vo farebných obrazoch
22. – OTVORENÝ PRÍSTUP
PRACOVNÉ PROSTREDIE PRI PRÁCI S POČÍTAČMI Z HĽADISKA ERGONÓMIE
Vysoko subjektívna prezentácia o používaní podcastov
Heuristické optimalizačné procesy
Heuristické optimalizačné procesy
Zásady hygieny pri stolovaní
REACH 2018 Nájdite svojich spoluregistrujúcich a pripravte sa na spoločnú registráciu.
Ing. Anita Sáreníková/ Cvičenia z aplikovanej informatiky
komercia vs. dokonalosť
4. Užívateľské prostredie UNIXu
Veľkosť trhu agentúrnych zamestnancov
Seminár č. 9 - osnova Metódy sieťového plánovania a riadenia:
Ponúkame: poradenstvo technickú podporu - help desk školenia
Interaktívna kniha a e-learningový systém pre deti - Opera nehryzie
8. prednáška 10. november 2003.
Využitie biomasy v environmentálnych biotechnológiách
TVORBA VIET A OTÁZOK a KRÁTKYCH ODPOVEDÍ
Podpora adaptívneho WEB-u prostriedkami strojového učenia
Presentation transcript:

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

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

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

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

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

... 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

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

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

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

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

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

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

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

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

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

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 * 30.126; // konverzia a vlozenie do jLabel2 jLabel2.setText(Double.toString(Sk)); } 16

Ď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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ú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