Grafické uživatelské rozhraní GUI event-driven programming událostmi řízené programování

Rozměr: px
Začít zobrazení ze stránky:

Download "Grafické uživatelské rozhraní GUI event-driven programming událostmi řízené programování"

Transkript

1 Grafické uživatelské rozhraní GUI event-driven programming událostmi řízené programování 1

2 Osnova 2 1. Vytváření oken základní balíčky 2. Třída Component 3. Komponenty atributy komponent 4. Swingové komponenty 5. Třída Container její podtřídy - použití 6. Správci rozvržení v kontejneru 7. Zpracování událostí 8. Model delegování událostí 9. Třída AWTEvent 10. Přehled swingových komponent 11. Zprávci rozvržení - příklady

3 1. Vytváření oken - základní balíčky 3 základní balíčky: java.awt, javax.swing swingové třídy novější, avšak závisí na awt třídách základní okno je v Javě představováno objektem třídy Window a balíčku java.awt JFrame je však mnohem užitečnější třídou

4 java.lang 4 java.awt definuje komponentu, která je zobrazitelným objektem (tlačítko, posuvná lišta) java.awt definuje komponentu, která může obsahovat komponenty java.awt definuje základní okno, bez lišty a rámečku java.awt definuje okno s lištou titulek a rámečkem javax.swing definuje rámeček s rozšířenými možnostmi

5 import javax.swing..swing.jframe JFrame; public class TestOkna // object Window static JFrame okno = new JFrame("Toto je nazev okna"); Osnova Jednoduchý příklad na vytvoření okna 5 } public static void main(string String[] args) int sirkaokna = 400; // sirka okna v pixelech int vyskaokna = 150; // vyska okna v pixelech okno.setbounds setbounds(50, 100, // nastaveni pozice sirkaokna, vyskaokna); // a velikosti okno.setdefaultcloseoperation setdefaultcloseoperation(jframe JFrame.EXIT_ON_CLOSE); okno.setvisible setvisible(true true); // zobrazi okno }

6 Metoda setdefaultcloseoperation() 6 Argument EXIT_ON_CLOSE Popis co nastane při uzavření okna Uzavření okna a uvolnění všech jeho zdrojů, ukončení aplikace. DISPOSE_ON_CLOSE Zrušení rámu a všech komponent, které obsahuje, ale neukončení aplikace. DO_NOTHING_ON_CLOSE HIDE_ON_CLOSE Operace uzavření je neúčinná. Okno se pouze skryje voláním metody setvisible(false). Možno později okno opět zobrazit s metodou setvisible(true).

7 2. Třída Component (Komponenta) 7 Komponenta je libovolný objekt třídy, která je potomkem třídy Component. Představuje grafický útvar, který může být zobrazen na obrazovce.

8 Třída Component a její podtřídy 8 Component Container Panel Window JComponent Applet Frame Dialog JApplet JFrame JDialog

9 Podtřídy třídy Component 9 Třída JFrame JDialog JApplet JComponent Popis Použití jako základní aplikační okno. Vlastní třída bývá podtřídou JFrame. Dají se přidat další GIU komponenty a také využít pro kreslení. Použití pro dialog s uživatelem. Základní třída pro applety programy běžící vnořené do webové stránky. Podtřídy této třídy definujířadu standardních komponent jako nabídky (menu), tlačítka, zaškrtávací políčka atd.

10 Okenní plochy 10 Okenní plochy jsou kontejnerové objekty, které představují oblast okna Existuje jich několik typů: JRootPane plocha pod titulkovací lištou, odpovídá objektu JFrame JLayeredPane řídí listu nabídek (menu) JInternalPane objektem této třídy je contentpane představující vlastní plochu okna metody: getrootpane(), getlayeredpane(), getcontentpane()

11 3. Komponenty - atributy komponent 11 atributy, které se dědí od tříd Component a Container Komponenta uvnitř jiné komponenty vnější objekt se nazývárodič metoda getparent() žádný rodič neexistuje metoda vrací null

12 Atributy komponent 12 Poloha (x, y) souřadnice, kde se objekt nachází v závislosti na svém kontainetovém objektu Jméno uloženo v objekty typu String Velikost šířka a výška objektu Barva popředí a pozadí barvy použity při zobrazení objektu Font použit při zobrazení textu Kurzor definuje vzhled kurzoru při práci s objektem Viditelnost objektu neviditelný objekt není vykreslen isvisible(), setvisible(true / false)

13 Atributy komponent - pokračování 13 Platnost objektu (validace) objekt není platný, nebylo li určeno uspořádání objektů, které ho tvoří. U neplatného objektu je změněn jeho obsah. Nejdříve se musí validovat. isvalid() Povolení objektu je-li komponenta povolena má stav true a má běžný vzhled. Je-li zakázána, je zastíněna šedou barvou, ale může vyvolat událost. isenabled(), setenabled(true / false)

14 Velikost a umístění komponenty 14 Metoda void setbounds(int x, int y, int sirka, int vyska) void setbounds(rectangle obdelnik) Rectangle getbounds() void setsize(dimension d) Dimension getsize() Popis Nastaví polohu (x, y) a velikost šířka, výška objektu typu Component Nastaví polohu a velikost objektu typu Component na hodnoty Rectangle(x, y, s, v) x, y - poloha, s, v - velikost Vrací polohu a velikost objektu typu Component Dimension(width, height) šířka a výška nastaví velikost na udané hodnoty Vrací aktuální velikost typu Component

15 Velikost a umístění komponenty 15 Metoda void setlocation(int x, int y) void setlocation(point p) Point getlocation() Popis Nastaví polohu komponenty na souřadnice definované v argumentech metody Nastaví polohu komponenty na souřadnice bodu p Vrací polohu objektu typu Component jako objekt typu bod point.

16 import javax.swing..swing.jframe JFrame; import java.awt awt.toolkit Toolkit; import java.awt awt.dimension Dimension; public class TestOkno1 // object awindow static JFrame awindow = new JFrame("T ("Toto je moje okno"); Osnova 16 Objektem třídy Toolkit můžeme měnit velikost a polohu okna na obrazovce } public static void main(string String[] args) Toolkit thekit = awindow.gettoolkit gettoolkit(); // ziska sadu nastroju // ziska velikost obrazovky Dimension wndsize = thekit.getscreensize getscreensize(); // Set the position to screen center & size to half screen size awindow.setbounds setbounds(wndsize wndsize.width width/4, wndsize.height height/4, // Pozice wndsize.width width/2, wndsize.height height/2); // Velikost awindow.setdefaultcloseoperation setdefaultcloseoperation(jframe JFrame.EXIT_ON_CLOSE); // Zobrazi okno awindow.setvisible setvisible(true true); }

17 Vizuální vlastnosti komponenty 17 vzhled komponenty je daný: reprezentací komponenty vytvořenou kódem ve třídě komponenty, který se provede při zobrazení komponenty tím co na komponentu nakreslíme na komponentu můžeme nakreslit pomocí její metody paint() je volána automaticky při vykreslení komponenty nutné pouze zastínit (override) znovu deklarovat metodu paint()

18 Metody pro vizualizaci komponenty 18 Metoda void setbackground (Color barva) Color getbackground() Popis Nastaví barvu pozadí nabarva. Vrátí aktuální barvu pozadí. void setforeground(color barva) Color getforeground() Nastaví barvu popředí na barva. Barva popředí popisy, texty. Vrátí aktuální barvu popředí. void setcursor(cursor kurzor) void setfont(font font) Nastaví komponentu kurzor na daný tvar. Nastaví font písma na font. Font getfont() Vrací aktuální font písma.

19 Základní barvy 19 Barva obrazovky objekt třídy Color kombinace červené, zelené a modré RGB Standardní barevné konstanty: WHITE, LIGHT_GRAY, GRAY, DARK_GRAY, BLACK, RED, ORANGE, YELLOW, GREEN, PINK, MANGETA, CYAN, BLUE tatobarva.brighter(); tatobarba.darker();

20 import javax.swing..swing.jframe JFrame; import java.awt awt.toolkit Toolkit; import java.awt awt.dimension Dimension; import java.awt awt.color Color; import java.awt awt.cursor Cursor; Osnova 20 public class TestOkno2 // object okno static JFrame okno = new JFrame("Toto je moje okno"); public static void main(string String[] args) Toolkit thekit = okno.gettoolkit gettoolkit(); // Get the window toolkit Dimension wndsize = thekit.getscreensize getscreensize(); // Get screen size } } // Set the position to screen center & size to half screen size okno.setbounds setbounds(wndsize wndsize.width width/4, wndsize.height height/4, // Position wndsize.width width/2, wndsize.height height/2); // Size okno.setdefaultcloseoperation setdefaultcloseoperation(jframe JFrame.EXIT_ON_CLOSE); okno.setcursor setcursor(cursor Cursor.getPredefinedCursor getpredefinedcursor(cursor Cursor.CROSSHAIR_CURSOR)); okno.getcontentpane getcontentpane(). ().setbackground setbackground(color Color.PINK); okno.setvisible setvisible(true true); // Display the window

21 4. Swingové komponenty 21 mají základ ve třídě JComponent, která vznikla ze třídy Component přidáním následujících možností: podpora pro zapojitelný vzhled (pluggable look and feel), který umožňuje uzpůsobit (customize) komponenty potřebám uživatele, podporu pro bublinkovou nápovědu, podporu pro urychlující klávesy (shortcut keys), snadné rozšíření tříd pro vytváření vlastních komponent. JComponent podporuje navíc lehké procesy (lightweight)

22 Tlačítka 22 JButton klasické tlačítko JCheckBox zaškrtávací tlačítka JRadioButton radiová tlačítka použito pouze jedno

23 Nabídky - menu 23 Objekt typu JMenuBar definuje nabídkovou lištu nahoře Objekt typu JMenu představuje nabídkovou položku první úrovně, která se po kliknutí rozvine do seznamu nabídkových položek Třída PopupMenu definuje kontextovou nabídku, která se objeví po kliknutí pravého tlačítka myši

24 Textové komponenty 24 Komponenta JLabel pasivní, nereaguje na vstup události, nedá se editovat JTextField podobně jako JLabel (řádek textu) ale editovatelná JFormatedTextField podobně jako JTextField, ale umožňuje formátování např. datum JTextArea umožňuje editování víceřádkového textu (automatické posuvníky) JEditorPane podporuje editování prostého textu JTextPane navíc vkládání obrázků a jiných komponent

25 Ostatní swingové komponenty 25 Třída JPanel definuje něco jako fyzický panel, použitý pro seskupení sady komponent např. dvou oddělených skupin typu JButton Třída JList realizuje seznam položek, ze kterého se dá vybírat Třída JTable realizuje tabulku položek, ze kterých se dá vybírat řádek, nebo sloupec nebo jedna položka. Komponenta provádí automaticky změnu pořadí sloupců při přetažení myší.

26 5. Třída Container, její podtřídy použití 26 Kontejner je jakákoli komponenta, která je podtřídou třídy Container (abstraktní třída). Vlastnost: možnost obsahovat jiné komponenty Kontejner nemůže obsahovat objekt třídy Window, pouze objekty podtříd třídy Container. Dialogové okno může např. obsahovat objekt typu JList a objekty typu JCheckbox a JButton. Na rozmístění vnitřních komponent se používá správce rozmístění (Layout Manager).

27 Základní metody definované ve třídě Container 27 Metoda int getcomponentcount() Component getcomponent(int index) Component[] getcomponents() Popis Vrací počet komponent obsažených v aktuální komponentě. Vrací komponentu určenou indexem od 0 do n-1, jinak výjimka ArrayIndexOutOfBoundsException Vrací pole všech komponent v aktuálním kontejneru

28 Přidávání komponent do kontejneru 28 Přidání komponenty do kontejneru neodstraní žádnou z již přítomných komponent. Ty se posunou v případě přidání komponenty na konkrétní místo určené indexem. Jedna komponenta může být jen v jednom kontejneru. Přidá-li se komponenta z jednoho kontejneru do jiného, je v původním kontejneru odstraněna.

29 Přidávání komponent do kontejneru 29 Metoda Component add ( Component c) Component add ( Component c, int index) void add(component c, Object omezeni) void add(component c, Object omezeni, int index) Popis Přidá komponentu c na konec seznamu komponent uložených v kontejneru. Vrácená je komponenta c. Přidá komponentu c na pozici indexu. Je-li index -1, přidá komponentu na konec seznamu. Vrácená hodnota je c. Přidá komponentu c na konec seznamu komponent uložených v kontejneru. Také informuje správce rozvržení, aby přidal komponentu do rozvržení s použitím argumentu omezení. Přidá komponentu c do seznamu komponent v kontejneru do pozice určené indexem a polohy určené omezením.

30 6. Správce rozvržení v kontejneru Layout Manager 30 Správce rozvržení určuje způsob, jakým jsou komponenty v kontejneru uspořádány. Všechny kontejnery mají implicitní správce rozvržení možnost ale zvolit i jiné správce rozvržení.

31 Správce rozvržení 31 Správce rozmístění FlowLayout BorderLayout CardLayout GridLayout Popis Umisťuje komponenty v po sobě jdoucích řádcích v kontejneru podobně jako textový editor, na konci přejde na nový řádek. Implicitní pro JPanel (vhodný pro JButton) Umisťuje komponenty do 5 oblastí: sever, jih, východ, západ a střed. Implicitní pro: JFrame, JDialog a JApplet Umisťuje komponenty v kontejneru jednu na druhou, jako v balíčku karet. Viditelná je pouze ta nahoře. Rozmisťuje komponenty v kontejneru do obdelníkové mřížky s vámi zadaným počtem řádků a sloupců.

32 Správce rozvržení 32 Správce rozmístění GridBagLayout BoxLayout SpringLayout Popis Rozvržení komponent do řádků a sloupců s různou délkou. Správce poskytuje značnou flexibilitu co se týče místa v němž jsou komponenty v kontejneru rozmístěny. Rozvržení komponent do řádku nebo do sloupce. Komponenty jsou, je-li to nutné oříznuty, a ne přemístěny do dalšího řádku nebo sloupce. Správce implicitní pro kontejnerovou třídu Box. Umožňuje zadání polohy komponenty pomocí pružin (springs) připevněných k hraně kontejneru nebo k další komponentě v kontejneru.

33 Správce rozvržení v kontejneru 33 TřidyBoxLayout, SpringLayout a Box jsou definovány v balíčku java.swing, ostatní třídy jsou definovány v balíčku java.awt. Správci automaticky upravují komponenty tak, aby zapadly do dostupného prostoru. Při pevné velikosti a poloze všech komponent může dojít k jejich překrývání nebo vytlačování při zmenšení plochy obrazovky.

34 Správce rozvržení v kontejneru 34 změna správce rozvržení: FlowLayout tok = new FlowLayout(); okno.getcontentpane().setlayout(tok);

35 import javax.swing..swing.jframe JFrame; import javax.swing..swing.jbutton JButton; Osnova 35 import java.awt awt.toolkit Toolkit; import java.awt awt.dimension Dimension; import java.awt awt.container Container; import java.awt awt.flowlayout FlowLayout; public class TryFlowLayout // The window object static JFrame awindow = new JFrame(" ("This is the Window Title"); public static void main(string String[] args) Toolkit thekit = awindow.gettoolkit gettoolkit(); // Get the window toolkit Dimension wndsize = thekit.getscreensize getscreensize(); // Get screen size // Set the position to screen center & size to half screen size awindow.setbounds setbounds(wndsize wndsize.width width/4, wndsize.height height/4, // Position wndsize.width width/2, wndsize.height height/2); // Size awindow.setdefaultcloseoperation setdefaultcloseoperation(jframe JFrame.EXIT_ON_CLOSE); FlowLayout flow = new FlowLayout(); // Create a layout manager //FlowLayout flow = new FlowLayout(FlowLayout FlowLayout.LEFT); //FlowLayout flow = new FlowLayout(FlowLayout FlowLayout.LEFT, 20, 30);

36 Container content = awindow.getcontentpane getcontentpane(); // Get the content pane content.setlayout setlayout(flow flow); // Set the container layout mgr Osnova 36 // Pridani sesti tlacitkovych komponent for(int i = 1; i <= 6; i++) content.add add(new JButton(" ("Press " + i)); // Add a Button to content // pane } } awindow.pack pack(); awindow.setvisible setvisible(true true); // Display the window

37 7. Zpracování událostí (events) 37 Příklad knihovna: chci knihu, která je půjčena 1. chodím se dotazovat, zde není k dispozici (dotazování polling) 2. použití vzoru Observer (Publisher/Subscriber vydavatel/odběratel), který informuje o změnách v dostupnosti konkrétně daných knih Model pozorovatele je efektivnější a zprávu o vzniklé situaci poskytne prakticky okamžitě. Z toho principu je odvozen model událostmi řízeného programování

38 Zpracování událostí (events) 38 konzolové programy a programy využívající okna u konzolového programu jeho kód rozhoduje o pořadí událostí vše je dopředu určeno chod programu využívajícího okna je určen tím, co uživatel udělá v grafickém rozhraní výběr položek menu, tlačítek způsobí odpovídající akce programu (event-driven-programming)

39 Událostmi řízené programy 39 Moderní systémy s okny využívají model událostmi řízeného programování. V tomto modelu má aplikace typicky prostředky GUI (kliknutí na tlačítko, výběr položky z menu atd.) k interakci s uživatelem. Uživatelem vytvářené (generované) akce vytváří (generují) události. Při každé takové události se vytvoří objekt události (event object). Systém ukládá tyto události do fronty a pak je zasílá speciálním metodám nazývanými ovladače událostí. Argumentem uvedené metody je objekt události.

40 Událostmi řízené programy 40 Metoda ovladače události (event handler) je tzv. call back metoda což znamená, že tuto metodu vytvoří programátor, ale je volaná systémem (odtud volání zpět call back). Mnoho z událostí je vytvořeno uživatelem, ale jiné události mohou být vytvořeny také systémem.

41 Událostmi řízené programy 41 Procesu zpracování událostí se říká událostní smyčka (event loop). V této smyčce pracuje systém a očekává události. Pokud nějaké nastanou, tak je zpracuje a opět čeká ve smyčce na další události na podobném principu např. pracuje operační systém UNIX. Fragment kódu této smyčky může být:

42 while ( theapp.isrunning isrunning() ) Event e = nextevent(); // získ z ská novou událost z fronty událost lostí int id = e.getid getid(); switch( id ) case Event_MouseClick MouseClick; theapp.handlemouseclick handlemouseclick(); break; case Event_Mouse Mouse_Move Move; theapp.handlemousemove handlemousemove(); break; case Event_ButtonPush ButtonPush; theapp.handlebuttonpush handlebuttonpush(); break; case Event_KeyPush KeyPush; theapp.handlekeypush handlekeypush(); break; //... další události default: ignoreevent(e); break; } } Osnova 42 Po spuštění aplikace se tato v tzv. inicializační fázi. Po skončení této fáze se aplikace dostává do smyčky, ve které čeká na událost (event loop).

43 Model delegování událostí 43 Hlavníčásti tohoto modelu jsou: Zdroj události (event source) Posluchač události (event listener) Objekt události (event object) Zdroj události (event source) je objekt jako např. tlačítko, posuvník, který může generovat události. Zdroj události má metodu, která dovoluje jiným objektům, aby byly registrováni jako posluchači. To znamená jako objekty, které jsou uvědoměny, když nastala událost, kterou sledují (poslouchají).

44 Model delegování událostí 44 Např. metoda addactionlistener() je metoda, která se používá k registraci posluchačů, kteří sledují kliknutí na tlačítko. Posluchač události (event listener) je objekt (Observer), který sleduje, zda-li nenastala událost. Když zdroj události vytvoří (generuje) událost, registrovaní posluchači jsou o tom uvědoměni, když systém vyvolává odpovídající call-back metodu zapouzdřenou v posluchači.

45 Model delegování událostí 45 Např. již zmíněný posluchač události pro kliknití na tlačítko by implementoval odpovídající callback metodu, v tomto případě callback metodu actionperformed() deklarovanou v rozhraní ActionListener. Když uživatel klikne na tlačítko, metoda actionperformed() posluchače je volána, aby zpracovala tuto událost.

46 Model delegování událostí 46 Objekt události (event object) je objekt, který je předán jako argument call-back metodě posluchače. Např. již zmíněná metoda actionperformed() má následující notaci: public void actionperformed( ActionEvent e ); Tato metoda využívá argument e typu ActionEvent k získání dalších informací týkající se události, tedy identifikace objektu, který událost způsobil.

47 Model delegování událostí 47 Model delegování událostí je pružný a dovoluje, aby libovolný objekt byl registrovaný jako posluchač pro různé typy událostí. Zdroje událostí takto delegují zpracování generované (vytvořené) události na odpovídající call-back metodu, která je uvedena (zapouzdřena) uvnitř posluchače. Objekt vedený jako posluchač musí implementovat odpovídající rozhraní posluchače.

48 Model delegování událostí 48 V následující tabulce je uveden seznam typů událostí v balíčku java.awt.event spolu s korespondujícími posluchači (jejich rozhraními) a callback metodami deklarovanými v odpovídajících rozhraních.

49 Událost, posluchač, metoda zpětného volání 49 Třída události (Event class) Rozhraní posluchače (Listener interface) Metoda callback (Listener callback) ActionEvent ActionListener actionperformed() AdjustmentEvent AdjustmentListener adjustmentvaluechanged() ComponentEvent ComponentListener componenthidden() componentmoved() componentresized() componetshown() ContainerEvent ContainerListener componentadded() componentremoved() FocusEvent FocusListener focusgained() focuslost() ItemEvent ItemListener itemstatechanged() MouseEvent MouseListener mouseclicled() mouseentered() mousepressed() mousereleased() MouseMotionListener mousedrag() mousemoved() TextEvent TextListener textvaluechanged() WindowEvent WindowListener windowactivated() windowclosed() windowclosing() windowdeactivated() windowdeiconified() windowicinified() windowopened()

50 import java.awt awt.flowlayout FlowLayout; import java.awt awt.event event.actionlistener ActionListener; import java.awt awt.event event.actionevent ActionEvent; import javax.swing..swing.jframe JFrame; import javax.swing..swing.jbutton JButton; import javax.swing..swing.joptionpane JOptionPane; Osnova 50 public class ButtonFrame extends JFrame private JButton tlacitkostart; // tlacitko s textem private JButton tlacitkostop; // ButtonFrame prida JButtons do JFrame public ButtonFrame() super( "Testování tlačítek" tek" ); setlayout( new FlowLayout() ); // nastaveni spravce rozvrzeni tlacitkostart = new JButton( "Start" ); add( tlacitkostart ); // prida tlacitkostart do kontejneru JFrame tlacitkostop = new JButton( "Stop"); add( tlacitkostop ); // vytvoreni noveho ovladace ButtonHandler pro zpracovani udalosti // tlacitek ButtonHandler handler = new ButtonHandler(); ();//d //dále deklarovaná třída tlacitkostop.addactionlistener addactionlistener( handler ); tlacitkostart.addactionlistener addactionlistener( handler ); } // konec ButtonFrame konstruktoru

51 // vnitrni trida pro zpracovani udalosti tlacitek // ButtonHandler naslouchací objekt tlačítka tka private class ButtonHandler implements ActionListener // zpracuje udalost tlacitka public void actionperformed( ActionEvent udalost ) JOptionPane.showMessageDialog showmessagedialog( ButtonFrame.this this, String.format format( "Stiskli jste: %s", udalost.getactioncommand getactioncommand() ) ); } // konec metody actionperformed } // konec soukrome vnitrni tridy ButtonHandler } // konec tridy ButtonFrame Osnova 51

52 import javax.swing..swing.jframe JFrame; Osnova 52 public class ButtonTest public static void main( String args[] ) ButtonFrame buttonframe = new ButtonFrame(); // vytvoreni instance buttonframe.setdefaultcloseoperation setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); buttonframe.setsize setsize( 275, 110 ); // nastaveni velikost okna buttonframe.setvisible setvisible( true ); // zobrazeni okna } }

53 Třídy událostí 53 Nízkoúrovňové události: události vycházející z klávesnice, myši a události spojené s provozem okna minimalizace, uzavření. Význam událostí: myš byla přesunuta, okno bylo zavřeno, klávesa byla stlačena Sémantické události: specifické události spojené s komponentou jako: stisk tlačítka k nastartování nějaké programové akce, posunutí posuvníku Význam událostí: tlačítko OK stlačeno, položka menu vybrána

54 Třídy pro nízkoúrovňové události balíček java.awt.event 54 Událost FocusEvent Popis Objekty třídy představují události, které vznikají, když komponenta získá / ztratí fokus. MouseEvent Objekty třídy představují události, které jsou výsledkem akcí uživatele s myší pohyb, stisknutí tlačítka. KeyEvent Objekty třídy představují události, které vznikají stisknutím tlačítka klávesnice. WindowEvent Objekty třídy představují události, které se vztahují k oknu zmenšení, zavření okna.

55 9. Třída AWTEvent 55 je podtřídou třídy java.util.eventobject třída EventObject implementuje rozhrani Serializable, tedy všechny objekty tříd událostí jsou serializovatelné definuje metodu getsource(), která vrací objekt, který je zdrojem události jako odkaz na typ Object všechny třídy událostí dědí tuto metodu

56 Třída AWTEvent 56 Třída AWTEvent definuje konstanty, které představují různé události. Konstanty mají identifikátory tvořené jménem události za tím následuje _MASK Každá z konstant je hodnotou typu long s jedním nastaveným bitem (ostatní bity 0) umožňuje kombinaci událostí s logickými operátory or, and Např. MOUSE_EVENT_MASK, WINDOW_FOCUS_EVENT_MASK

57 Třída AWTEvent 57 Identifikátory událostí se používají k povolení určité skupiny události v objektu komponenty to se provede zavoláním metody enableevents() a předáním proměnné pro událost, která má být povolena dělá se pouze, když se nepoužívá přijímač (Listener). Zaregistrováním přijímače se automaticky povolí události, které je přijímač schopen slyšet.

58 Sémantické události 58 týkají se operací s komponentami GUI programu aplikace např. výběr položky z nabídky, nebo kliknutím na tlačítko tří třídy představují základní sémantické události jsou podtřídami od AWTEvent třídy EventObject AWTEvent ActionEvent ItemEvent AdjustmentEvent

59 Sémantické události 59 Typ události ActionEvent ItemEvent AdjustmentEvent Generované objekty typu Tlačítka: JButton, JToggleButton, JCheckBox Nabídky: JMenuItem, JMenu, JCheckBoxMenuItem, JRadioButtonMenuItem Text: JTextField Tlačítka: JButton, JToggleButton, JCheckBox Nabídky: JMenuItem, JMenu, JCheckBoxMenuItem, JRadioButtonMenuItem JScrollbar

60 Zpracování sémantických událostí pomocí posluchačů - Listeners 60 Každé z naslouchacích rozhraní definuje pouze jednu metodu, není třeba vytvářet odpovídající adaptery Naslouchací rozhraní ActionListener ItemListener AdjustmentListener Metoda void actionperformed(actionevent e) void itemstatechanged(itemevent c) void adjustmentvaluechanged(adjustmentevent e)

61 Třída událostí ActionEvent rozhraní ActionListener 61 Instance třídy ActionEvent je zaslána všem registrovaným posluchačům po každé aktivaci tlačítka Metoda getactioncommand() vrací příkazový řetězec co bývá popisek přiřazený k tlačítku, který událost generuje RozhraníActionListener definuje jen metodu actionperformed()

62 Jednoduchý čítač 62 část model část view a controller aplikace

63 public class Counter Osnova 63 } private int cnt = 0; public void incr() cnt++; } public void decr() cnt cnt-- --; } public void clr() cnt = 0; } public int getcnt() return cnt; }

64 import java.awt awt.flowlayout FlowLayout; import java.awt awt.event event.actionlistener ActionListener; import java.awt awt.event event.actionevent ActionEvent; import javax.swing..swing.jframe JFrame; import javax.swing..swing.jtextfield JTextField; import javax.swing..swing.jlabel JLabel; import javax.swing..swing.jbutton JButton; Osnova 64 public class CounterFrame extends JFrame private Counter c = new Counter(); private JButton increment, decrement, clear; private JTextField field; private JLabel label; public CounterFrame() super("jenoduchý číta tač"); setlayout(new FlowLayout()); label = new JLabel("Stav číta tače: "); add(label label); field = new JTextField(6); field.seteditable seteditable(false false); field.sethorizontalalignment sethorizontalalignment(jtextfield JTextField.RIGHT); add(field field); field.settext settext(string String.valueOf valueof(c. (c.getcnt getcnt())); increment = new JButton(" ("Increment Increment"); add(increment increment); decrement = new JButton(" ("Decrement Decrement"); add(decrement decrement); clear = new JButton(" ("Clear Clear"); add(clear clear);

65 ButtonHandler handler = new ButtonHandler(); increment.addactionlistener addactionlistener(handler handler); decrement.addactionlistener addactionlistener(handler handler); clear.addactionlistener addactionlistener(handler handler); } private class ButtonHandler implements ActionListener public void actionperformed(actionevent event) if(event event.getsource getsource()== ()==increment increment) c.incr incr(); field.settext settext(string String.valueOf valueof(c. (c.getcnt getcnt())); } else if(event event.getsource getsource()== ()==decrement decrement) c.decr decr(); field.settext settext(string String.valueOf valueof(c. (c.getcnt getcnt())); } else if(event event.getsource getsource()== ()==clear clear) c.clr clr(); field.settext settext(string String.valueOf valueof(c. (c.getcnt getcnt())); } } } Osnova 65 }

66 import javax.swing..swing.jframe JFrame; public class CounterFrameTest Osnova 66 } public static void main(string args[]) CounterFrame counterframe= new CounterFrame(); counterframe.setdefaultcloseoperation (JFrame JFrame.EXIT_ON_CLOSE); counterframe.setsize setsize(400, 200); counterframe.setvisible setvisible(true true); }

67 10. Přehled Swingových komponent 67 Komponenta JLabel JTextField JButton JCheckBox JComboBox JList JPanel Popis Zobrazuje needitovatelný text, nebo ikony Umožňuje uživateli vstup dat z klávesnice. Je možné také použít pro zobrazení editovatelných a needitovatelných textů. Spouští událost kliknutím myši na tlačítko. Specifikuje volby Poskytuje drop-down seznam položek pro výběr nebo doplnění. Poskytuje seznam položek pro jedno i vícenásobný výběr. Poskytuje oblast pro umístění a další zpracování komponent.

68 Text Fields a úvod do zpracování událostí s vnořenými třídami 68 JTextField Jednořádková oblast do které může uživatel zadat text JPasswordField je podtřídou JTextField ukrývá znaky, které zadává uživatel (zobrazuje *)

69 // Demonstrating the JTextField class. import java.awt awt.flowlayout FlowLayout; import java.awt awt.event event.actionlistener ActionListener; import java.awt awt.event event.actionevent ActionEvent; import javax.swing..swing.jframe JFrame; import javax.swing..swing.jtextfield JTextField; import javax.swing..swing.jpasswordfield JPasswordField; import javax.swing..swing.joptionpane JOptionPane; Osnova 69 public class TextFieldFrame extends JFrame private JTextField textfield1; // text field with set size private JTextField textfield2; // text field constructed with text private JTextField textfield3; // text field with text and size private JPasswordField passwordfield; // password field with text // TextFieldFrame constructor adds JTextFields to JFrame public TextFieldFrame() super( "Testing " JTextField and JPasswordField" ); setlayout( new FlowLayout() ); // set frame layout // construct textfield with 10 columns textfield1 = new JTextField( 10 ); add( textfield1 ); // add textfield1 to JFrame // construct textfield with default text textfield2 = new JTextField( "Enter" text here" ); add( textfield2 ); // add textfield2 to JFrame

70 // construct textfield with default text and 21 columns textfield3 = new JTextField( "Uneditable" text field", 21 ); textfield3.seteditable seteditable( false ); // disable editing add( textfield3 ); // add textfield3 to JFrame Osnova 70 // construct passwordfield with default text passwordfield = new JPasswordField( "Hidden" text" ); add( passwordfield ); // add passwordfield to JFrame // register event handlers TextFieldHandler handler = new TextFieldHandler(); textfield1.addactionlistener addactionlistener( handler ); textfield2.addactionlistener addactionlistener( handler ); textfield3.addactionlistener addactionlistener( handler ); passwordfield.addactionlistener addactionlistener( handler ); } // end TextFieldFrame constructor // private inner class for event handling private class TextFieldHandler implements ActionListener // process textfield events public void actionperformed( ActionEvent event ) String string = ""; // declare string to display // user pressed Enter in JTextField textfield1 if ( event.getsource getsource() == textfield1 ) string = String.format format( "textfield1: %s", event.getactioncommand getactioncommand() );

71 // user pressed Enter in JTextField textfield2 else if ( event.getsource getsource() == textfield2 ) string = String.format format( "textfield2: %s", event.getactioncommand getactioncommand() ); Osnova 71 // user pressed Enter in JTextField textfield3 else if ( event.getsource getsource() == textfield3 ) string = String.format format( "textfield3: %s", event.getactioncommand getactioncommand() ); // user pressed Enter in JTextField passwordfield else if ( event.getsource getsource() == passwordfield ) string = String.format format( "passwordfield" passwordfield: %s", new String( passwordfield.getpassword getpassword() ) ); // display JTextField content JOptionPane.showMessageDialog showmessagedialog( null, string ); } // end method actionperformed } // end private inner class TextFieldHandler } // end class TextFieldFrame

72 // Testing TextFieldFrame. import javax.swing..swing.jframe JFrame; Osnova 72 public class TextFieldTest public static void main( String args[] ) TextFieldFrame textfieldframe = new TextFieldFrame(); textfieldframe.setdefaultcloseoperation setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); textfieldframe.setsize setsize( 325, 100 ); // set frame size textfieldframe.setvisible setvisible( true ); // display frame } // end main } // end class TextFieldTest

73 Výstupy aplikace 73

74 Výstupy aplikace 74

75 75 Některé běžné rozhraní event-listener balíčku java.awt.event interface EventListener interface ActionListener interface AdjustmentListener interface ComponentListener interface ContainerListener interface FocusListener interface ItemListener interface KeyListener interface MouseListener interface MouseMotionListener interface TextListener interface WindowListener «interface» EventListener «interface» ActionListener «interface» AdjustmentListener «interface» ComponentListener «interface» ContainerListener «interface» FocusListener «interface» ItemListener «interface» KeyListener «interface» MouseListener «interface» MouseMotionListener «interface» TextListener «interface» TextListener

76 JList 76 Seznam (List) Řada položek uživatel může vybrat jednu nebo více pložek Single-selection vs. multiple-selection JList

77 // Selecting colors from a JList. import java.awt awt.flowlayout FlowLayout; import java.awt awt.color Color; import javax.swing..swing.jframe JFrame; import javax.swing..swing.jlist JList; import javax.swing..swing.jscrollpane JScrollPane; import javax.swing..swing.event event.listselectionlistener ListSelectionListener; import javax.swing..swing.event event.listselectionevent ListSelectionEvent; import javax.swing..swing.listselectionmodel ListSelectionModel; Osnova 77 public class ListFrame extends JFrame private JList colorjlist; // list to display colors private final String colornames[] = "Black" Black", "Blue" Blue", "Cyan" Cyan", "Dark Gray", "Gray" Gray", "Green" Green", "Light" Gray", "Magenta" Magenta", "Orange Orange", "Pink", "Red" Red", "White" White", "Yellow" Yellow" }; private final Color colors[] = Color.BLACK, Color.BLUE, Color.CYAN, Color.DARK_GRAY, Color.GRAY, Color.GREEN, Color.LIGHT_GRAY, Color.MAGENTA, Color.ORANGE, Color.PINK, Color.RED, Color.WHITE, Color.YELLOW }; // ListFrame constructor add JScrollPane containing JList to JFrame public ListFrame() super( "List Test" ); setlayout( new FlowLayout() ); // set frame layout colorjlist = new JList( colornames ); // create with colornames colorjlist.setvisiblerowcount setvisiblerowcount( 5 ); // display five rows at once

78 // do not allow multiple selections colorjlist.setselectionmode setselectionmode( ListSelectionModel.SINGLE_SELECTION ); Osnova 78 // add a JScrollPane containing JList to frame add( new JScrollPane( colorjlist ) ); colorjlist.addlistselectionlistener addlistselectionlistener( new ListSelectionListener() // anonymous inner class // handle list selection events public void valuechanged( ListSelectionEvent event ) getcontentpane(). ().setbackground setbackground( colors[ colorjlist.getselectedindex getselectedindex() ] ); } // end method valuechanged } // end anonymous inner class ); // end call to addlistselectionlistener } // end ListFrame constructor } // end class ListFrame

79 // Selecting colors from a JList. import javax.swing..swing.jframe JFrame; public class ListTest public static void main( String args[] ) ListFrame listframe = new ListFrame(); // create ListFrame listframe.setdefaultcloseoperation setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); listframe.setsize setsize( 350, 150 ); // set frame size listframe.setvisible setvisible( true ); // display frame } // end main } // end class ListTest Aplikace Osnova 79

80 Výstupy aplikace 80

81 Multiple-Selection Lists 81 Multiple-selection list Select many items from Jlist Allows continuous range selection

82 // Copying items from one List to another. import java.awt awt.flowlayout FlowLayout; import java.awt awt.event event.actionlistener ActionListener; import java.awt awt.event event.actionevent ActionEvent; import javax.swing..swing.jframe JFrame; import javax.swing..swing.jlist JList; import javax.swing..swing.jbutton JButton; import javax.swing..swing.jscrollpane JScrollPane; import javax.swing..swing.listselectionmodel ListSelectionModel; Osnova 82 public class MultipleSelectionFrame extends JFrame private JList colorjlist; // list to hold color names private JList copyjlist; // list to copy color names into private JButton copyjbutton; // button to copy selected names private final String colornames[] = "Black" Black", "Blue" Blue", "Cyan" Cyan", "Dark Gray", "Gray" Gray", "Green" Green", "Light" Gray", "Magenta" Magenta", "Orange" Orange", "Pink", "Red " Red", "White" White", "Yellow" Yellow" }; // MultipleSelectionFrame constructor public MultipleSelectionFrame() super( "Multiple " Selection Lists" ); setlayout( new FlowLayout() ); // set frame layout colorjlist = new JList( colornames ); // holds names of all colors colorjlist.setvisiblerowcount setvisiblerowcount( 5 ); // show five rows colorjlist.setselectionmode setselectionmode( ListSelectionModel.MULTIPLE_INTERVAL_SELECTION ); add( new JScrollPane( colorjlist ) ); // add list with scrollpane

83 copyjbutton = new JButton( "Copy >>>" ); // create copy button copyjbutton.addactionlistener addactionlistener( Osnova 83 new ActionListener() // anonymous inner class // handle button event public void actionperformed( ActionEvent event ) // place selected values in copyjlist copyjlist.setlistdata setlistdata( colorjlist.getselectedvalues getselectedvalues() ); } // end method actionperformed } // end anonymous inner class ); // end call to addactionlistener add( copyjbutton ); // add copy button to JFrame copyjlist = new JList(); // create list to hold copied color names copyjlist.setvisiblerowcount setvisiblerowcount( 5 ); // show 5 rows copyjlist.setfixedcellwidth setfixedcellwidth( 100 ); // set width copyjlist.setfixedcellheight setfixedcellheight( 15 ); // set height copyjlist.setselectionmode setselectionmode( ListSelectionModel.SINGLE_INTERVAL_SELECTION ); add( new JScrollPane( copyjlist ) ); // add list with scrollpane } // end MultipleSelectionFrame constructor } // end class MultipleSelectionFrame

84 // Testing MultipleSelectionFrame. import javax.swing..swing.jframe JFrame; Osnova 84 public class MultipleSelectionTest public static void main( String args[] ) MultipleSelectionFrame multipleselectionframe = new MultipleSelectionFrame(); multipleselectionframe.setdefaultcloseoperation setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); multipleselectionframe.setsize setsize( 350, 140 ); // set frame size multipleselectionframe.setvisible setvisible( true ); // display frame } // end main } // end class MultipleSelectionTest

85 Výstupy aplikace 85

86 Mouse Event Handling 86 Rozhraní Event-listener pro události způsobené myší MouseListener MouseMotionListener Listen for MouseEvents

87 Metody rozhraní MouseListener 87 public void mousepressed( MouseEvent event ) Metoda je vyvolána, když je stisknuto tlačítko myši, zatímco kurzor myši je na komponentě. public void MouseClicked( MouseEvent event ) Metoda je vyvolána, když je stisknuto a uvolněno tlačítko myši, zatímco kurzor zůstává na komponentě. Této události vždy předchází volání mousepressed. public void mousereleased( MouseEvent event ) Metoda je volaná, když po stisknutí je uvolněno tlačítko myši. Tuto událost vždy předchází volání mousepressed a jedno nebo více volání mousedragged. public void mouseentered( MouseEvent event ) Metoda je volaná, když kurzor myši navazuje spojení s komponentou. public void mouseexited( MouseEvent event ) Metoda je volaná, když kurzor myši opouští spojení s komponentou.

88 Metody rozhraní MouseMotionListener 88 public void mousedragged( MouseEvent event ) Metoda je volaná při současném splnění: kurzor myši na komponentě, myš se posunula, tlačítko myši zůstává stisknuté. Této události vždy předchází volání metody mousepressed. Všechny události tažení jsou zaslány komponentě na niž uživatel začal táhnout myší. public void mousemoved( MouseEvent event ) Metoda je volaná když se myš přesune a kurzor myši je na komponentě. Všechny události posunutí jsou zaslány komponentě, na níž je aktuálně umístěna myš.

89 // Demonstrating mouse events. import java.awt awt.color Color; import java.awt awt.borderlayout BorderLayout; import java.awt awt.event event.mouselistener MouseListener; import java.awt awt.event event.mousemotionlistener MouseMotionListener; import java.awt awt.event event.mouseevent MouseEvent; import javax.swing..swing.jframe JFrame; import javax.swing..swing.jlabel JLabel; import javax.swing..swing.jpanel JPanel; Osnova 89 public class MouseTrackerFrame extends JFrame private JPanel mousepanel; // panel in which mouse events will occur private JLabel statusbar; // label that displays event information // MouseTrackerFrame constructor sets up GUI and // registers mouse event handlers public MouseTrackerFrame() super( "Demonstrating " Mouse Events" ); mousepanel = new JPanel(); // create panel mousepanel.setbackground setbackground( Color.WHITE ); // set background color add( mousepanel, BorderLayout.CENTER ); // add panel to JFrame statusbar = new JLabel( "Mouse outside JPanel" ); add( statusbar, BorderLayout.SOUTH ); // add label to JFrame

90 // create and register listener for mouse and mouse motion events MouseHandler handler = new MouseHandler(); mousepanel.addmouselistener addmouselistener( handler ); mousepanel.addmousemotionlistener addmousemotionlistener( handler ); } // end MouseTrackerFrame constructor Osnova 90 private class MouseHandler implements MouseListener, MouseMotionListener // MouseListener event handlers // handle event when mouse released immediately after press public void mouseclicked( MouseEvent event ) statusbar.settext settext( String.format format( "Clicked" at [%d, %d]", event.getx getx(), event.gety gety() ) ); } // end method mouseclicked // handle event when mouse pressed public void mousepressed( MouseEvent event ) statusbar.settext settext( String.format format( "Pressed" at [%d, %d]", event.getx getx(), event.gety gety() ) ); } // end method mousepressed // handle event when mouse released after dragging public void mousereleased( MouseEvent event ) statusbar.settext settext( String.format format( "Released" at [%d, %d]", event.getx getx(), event.gety gety() ) ); } // end method mousereleased

91 // handle event when mouse enters area public void mouseentered( MouseEvent event ) statusbar.settext settext( String.format format( "Mouse entered at [%d, %d]", event.getx getx(), event.gety gety() ) ); mousepanel.setbackground setbackground( Color.GREEN ); } // end method mouseentered Osnova 91 // handle event when mouse exits area public void mouseexited( MouseEvent event ) statusbar.settext settext( "Mouse outside JPanel" ); mousepanel.setbackground setbackground( Color.WHITE ); } // end method mouseexited // MouseMotionListener event handlers // handle event when user drags mouse with button pressed public void mousedragged( MouseEvent event ) statusbar.settext settext( String.format format( "Dragged" at [%d, %d]", event.getx getx(), event.gety gety() ) ); } // end method mousedragged // handle event when user moves mouse public void mousemoved( MouseEvent event ) statusbar.settext settext( String.format format( "Moved" at [%d, %d]", event.getx getx(), event.gety gety() ) ); } // end method mousemoved } // end inner class MouseHandler } // end class MouseTrackerFrame

92 // Testing MouseTrackerFrame. import javax.swing..swing.jframe JFrame; Osnova 92 public class MouseTracker public static void main( String args[] ) MouseTrackerFrame mousetrackerframe = new MouseTrackerFrame(); mousetrackerframe.setdefaultcloseoperation setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); mousetrackerframe.setsize setsize( 300, 100 ); // set frame size mousetrackerframe.setvisible setvisible( true ); // display frame } // end main } // end class MouseTracker

93 Výstupy aplikace 93

94 Třídy Adapter 94 Třida Adapter Implementuje rozhraní Poskytuje standardní implementaci každé metody rozhraní Používá se, když nejsou třeba všechny metody daného rozhraní

95 Třídy Event-adapter a rozhraní které implementují v balíčku java.awt.event 95 Třída Event-adapter v java.awt.event CommonentAdapter ContainerAdapter FocusAdapter KeyAdapter MouseAdapter MouseMotionAdapter WindowAdapter implementuje rozhraní ComponentListener ContainerListener FocusListener KeyListener MouseListener MouseMotionListener WindowListener

96 // Demonstrating mouse clicks and distinguishing between mouse buttons. import java.awt awt.borderlayout BorderLayout; import java.awt awt.graphics Graphics; import java.awt awt.event event.mouseadapter MouseAdapter; import java.awt awt.event event.mouseevent MouseEvent; import javax.swing..swing.jframe JFrame; import javax.swing..swing.jlabel JLabel; Osnova 96 public class MouseDetailsFrame extends JFrame private String details; // String representing private JLabel statusbar; // JLabel that appears at bottom of window // constructor sets title bar String and register mouse listener public MouseDetailsFrame() super( "Mouse clicks and buttons" ); statusbar = new JLabel( "Click" the mouse" ); add( statusbar, BorderLayout.SOUTH ); addmouselistener( new MouseClickHandler() ); // add handler } // end MouseDetailsFrame constructor

97 // inner class to handle mouse events private class MouseClickHandler extends MouseAdapter // handle mouse click event and determine which button was pressed public void mouseclicked( MouseEvent event ) int xpos = event.getx getx(); // get x position of mouse int ypos = event.gety gety(); // get y position of mouse Osnova 97 details = String.format format( "Clicked" %d time(s)", event.getclickcount getclickcount() ); if ( event.ismetadown ismetadown() ) // right mouse button details += " with right mouse button"; else if ( event.isaltdown isaltdown() ) // middle mouse button details += " with center mouse button"; else // left mouse button details += " with left mouse button"; statusbar.settext settext( details ); // display message in statusbar } // end method mouseclicked } // end private inner class MouseClickHandler } // end class MouseDetailsFrame

98 // Testing MouseDetailsFrame. import javax.swing..swing.jframe JFrame; public class MouseDetails public static void main( String args[] ) MouseDetailsFrame mousedetailsframe = new MouseDetailsFrame(); mousedetailsframe.setdefaultcloseoperation setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); mousedetailsframe.setsize setsize( 400, 150 ); // set frame size mousedetailsframe.setvisible setvisible( true ); // display frame } // end main } // end class MouseDetails Aplikace Osnova 98

99 Výsledky aplikace 99

100 Zpracování událostí klávesnice Key Event Handling 100 Rozhraní KeyListener Zpracovává key events události jsou generovány (vytvářeny) když je stisknuta klávesa a když je uvolněna klávesa KeyEvent Obsahuje virtual key code který reprezentuje klávesu

101 // Demonstrating keystroke events. import java.awt awt.color Color; import java.awt awt.event event.keylistener KeyListener; import java.awt awt.event event.keyevent KeyEvent; import javax.swing..swing.jframe JFrame; import javax.swing..swing.jtextarea JTextArea; Osnova 101 public class KeyDemoFrame extends JFrame implements KeyListener private String line1 = ""; // first line of textarea private String line2 = ""; // second line of textarea private String line3 = ""; // third line of textarea private JTextArea textarea; // textarea to display output // KeyDemoFrame constructor public KeyDemoFrame() super( "Demonstrating " Keystroke Events" ); textarea = new JTextArea( 10, 15 ); // set up JTextArea textarea.settext settext( "Press" any key on the keyboard..." ); textarea.setenabled setenabled( false ); // disable textarea textarea.setdisabledtextcolor setdisabledtextcolor( Color.BLACK ); // set text color add( textarea ); // add textarea to JFrame addkeylistener( this ); // allow frame to process key events } // end KeyDemoFrame constructor

102 // handle press of any key public void keypressed( KeyEvent event ) line1 = String.format( "Key pressed: %s", event.getkeytext( event.getkeycode() ) ); // output pressed key setlines2and3( event ); // set output lines two and three } // end method keypressed Osnova 102 // handle release of any key public void keyreleased( KeyEvent event ) line1 = String.format( "Key released: %s", event.getkeytext( event.getkeycode() ) ); // output released key setlines2and3( event ); // set output lines two and three } // end method keyreleased // handle press of an action key public void keytyped( KeyEvent event ) line1 = String.format( "Key typed: %s", event.getkeychar() ); setlines2and3( event ); // set output lines two and three } // end method keytyped // set second and third lines of output private void setlines2and3( KeyEvent event ) line2 = String.format( "This key is %san action key", ( event.isactionkey()? "" : "not " ) ); String temp = event.getkeymodifierstext( event.getmodifiers() );

103 line3 = String.format format( "Modifier" keys pressed: %s", ( temp.equals equals( "" )? "none" none" : temp ) ); // output modifiers Osnova 103 textarea.settext settext( String.format format( "%s\n%s n%s\n%s n%s\n", n", line1, line2, line3 ) ); // output three lines of text } // end method setlines2and3 } // end class KeyDemoFrame

104 // Testing KeyDemoFrame. import javax.swing..swing.jframe JFrame; Osnova 104 public class KeyDemo public static void main( String args[] ) KeyDemoFrame keydemoframe = new KeyDemoFrame(); keydemoframe.setdefaultcloseoperation setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE ); keydemoframe.setsize setsize( 350, 100 ); // set frame size keydemoframe.setvisible setvisible( true ); // display frame } // end main } // end class KeyDemo

105 Výsledky aplikace 105

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí

Java GUI události. Událostmi řízené programování. Zpracování = obsluha událostí Java GUI události Cílem kapitoly je přiblížit hlavní princip událostmi řízeného programování a ukázat na příkladu způsob řešení pro konkrétní případ. Soubor obsahuje také tabulku s přehledem nejčastěji

Více

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans. 1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými

Více

8. Grafické uživatelské rozhraní

8. Grafické uživatelské rozhraní 8. Grafické uživatelské rozhraní Až dosud jsme pro výstupy a vstupy do našich programů využívali pouze konzoli nebo soubor. Java nám však poskytuje nástroje pro tvorbu grafického uživatelského rozhraní,

Více

GUI - úvod. V této kapitole si ukážeme návod, jak vytvořit jednoduchou grafickou aplikaci a umístit do ní některé další grafické prvky.

GUI - úvod. V této kapitole si ukážeme návod, jak vytvořit jednoduchou grafickou aplikaci a umístit do ní některé další grafické prvky. GUI - úvod V této kapitole si ukážeme návod, jak vytvořit jednoduchou grafickou aplikaci a umístit do ní některé další grafické prvky. Klíčové pojmy: Grafické uživatelské rozhraní, grafické komponenty,

Více

Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Grafické uživatelské rozhraní v Javě. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Grafické uživatelské rozhraní v Javě A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Grafický návrh - příklad určíme základní rozvržení určíme chování okna při zvětšování

Více

TÉMATICKÝ OKRUH Softwarové inženýrství

TÉMATICKÝ OKRUH Softwarové inženýrství TÉMATICKÝ OKRUH Softwarové inženýrství Číslo otázky : 29. Otázka : Zpracování událostí: mechanismus událostí a jejich zpracování (Event/Listener), nepřímá invokace (Observer/Observable). Obsah : 1. Mechanisums

Více

Seznámení s AWT: práce s okny, grafikou a textem

Seznámení s AWT: práce s okny, grafikou a textem Seznámení s AWT: S knihovnou Abstract Window Toolkit (AWT) jsme se seznámili již v kapitole 22, v níž jsme ji využili v kódu několika ukázkových apletů. Tato kapitola je věnována jejímu podrobnému popisu.

Více

Java - Kresba. 2/28/11 1/8 Java - kresba

Java - Kresba. 2/28/11 1/8 Java - kresba Java - Kresba Základní entity a jejich kresba ve třídě Graphics nemůžeme nastavit linii, šířku a typ, z grafických atributů jí můžeme nastavit pouze barvu Linie (čára)... drawline(int x1, int y1, int x2,

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

Více

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení Třída DrawingTool strana 1 1. Základ Třída DrawingTool Třída DrawingTool je určena k jednoduchému kreslení pomocí několika základních příkazů do grafického okna zadaných rozměrů (nastavení v konstruktoru),

Více

Tvorba grafického uživatelského rozhraní v BlueJ

Tvorba grafického uživatelského rozhraní v BlueJ Jihočeská univerzita v Českých Budějovicích Pedagogická fakulta Katedra informatiky Bakalářská práce Tvorba grafického uživatelského rozhraní v BlueJ Vypracoval: Tomáš Svatek Vedoucí práce: RNDr. Hana

Více

Čipové karty Lekařská informatika

Čipové karty Lekařská informatika Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány

Více

Projekty pro výuku programování v jazyce Java

Projekty pro výuku programování v jazyce Java JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

01. HODINA. 1.1 Spuštění programu VB 2010. 1.2 Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

01. HODINA. 1.1 Spuštění programu VB 2010. 1.2 Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start. 01. HODINA 1.1 Spuštění programu VB 2010 - pomocí ikony, z menu Start. - po spuštění si můžeme vybrat, zda chceme vytvořit nový Projekt a jaký nebo zda chceme otevřít již existující Projekt. 1.2 Prvky

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

Práce se soubory v Javě

Práce se soubory v Javě Práce se soubory v Javě Cílem kapitoly je naučit pracovat se soubory a adresáři v Javě. Na jednoduchých příkladech ukázat procházení adresáře, čtení z textového souboru a zápis do textového souboru. Klíčové

Více

Příloha 6. Palety nástrojů

Příloha 6. Palety nástrojů Příloha 6. Palety nástrojů Palety nástrojů v IDE poskytují zkrácení pro příkazy nabídky. Příkazy jsou rozděleny do několika palet nástrojů, které mohou být nezávisle přeskupeny nebo vloženy do plovoucích

Více

Java, grafické uživatelské rozhraní 2. Layout managery. Okno a kontejner

Java, grafické uživatelské rozhraní 2. Layout managery. Okno a kontejner Java, grafické uživatelské rozhraní 2 Layout managery Při rozmisťování komponent na formuláře (či jiné komponenty) nedefinujeme v Javě polohu komponent zpravidla absolutně. Důvodem je fakt, že Java může

Více

11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9 Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

Technologie JavaBeans

Technologie JavaBeans Technologie JavaBeans doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah Historie Komponentový model Typy komponent

Více

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

Reliance 3 design OBSAH

Reliance 3 design OBSAH Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

Obrázek 6.14: Prohlížec nápovedy

Obrázek 6.14: Prohlížec nápovedy JavaHelp Základní popis systému JavaHelp Soucástí vetšiny interaktivních aplikací je nápoveda (help) aplikace v Jave nejsou výjimkou. Systém JavaHelp je napsaný v Jave a je urcený pro aplikace vytvárené

Více

První kapitola úvod do problematiky

První kapitola úvod do problematiky První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru

Více

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem

Více

Formuláře. Aby nám mohli uživatelé něco hezného napsat...... třeba co si o nás myslí!

Formuláře. Aby nám mohli uživatelé něco hezného napsat...... třeba co si o nás myslí! Formuláře Aby nám mohli uživatelé něco hezného napsat...... třeba co si o nás myslí! HTML formuláře: Formuláře Možnost, jak uživatel může vložit obsah na web - odeslat data na server - zpracovat data ve

Více

SWT & MigLayout. Alternativy Java GUI v praxi. Pavel Janečka & Tomáš Chlouba. červen 2011

SWT & MigLayout. Alternativy Java GUI v praxi. Pavel Janečka & Tomáš Chlouba. červen 2011 SWT & MigLayout Alternativy Java GUI v praxi Pavel Janečka & Tomáš Chlouba červen 2011 SWT SWT & MigLayout Historie Komponenty a události Vývoj aplikací a ukázky MigLayout Java Layout Managery Ukázka použití

Více

Java aplety. Předávání parametrů z HTML

Java aplety. Předávání parametrů z HTML Java aplety Aplety jsou speciální formou Java aplikací - mohou být spouštěny z prostředí WWW prohlížeče. Aby je prohlížeč spustil, musíme vložit do HTML stránky potřebné příkazy:

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

Uživatelský manuál aplikace. Dental MAXweb

Uživatelský manuál aplikace. Dental MAXweb Uživatelský manuál aplikace Dental MAXweb Obsah Obsah... 2 1. Základní operace... 3 1.1. Přihlášení do aplikace... 3 1.2. Odhlášení z aplikace... 3 1.3. Náhled aplikace v jiné úrovni... 3 1.4. Změna barevné

Více

Postřehová hra. Zadání projektu. 1 Moje cíle

Postřehová hra. Zadání projektu. 1 Moje cíle Gymnázium, Praha 6, Arabská 16 předmět Programování, vyučující Tomáš Obdržálek Postřehová hra ročníkový projekt Matouš Jokl, 1E květen 2014 Obsah 1 Moje cíle...1 2 Kód...2 1.Objekty a ArrayList...2 2.Jpanel

Více

Obsah. 1.1 Práce se záznamy... 3 1.2 Stránka Dnes... 4. 2.1 Kontakt se zákazníkem... 5

Obsah. 1.1 Práce se záznamy... 3 1.2 Stránka Dnes... 4. 2.1 Kontakt se zákazníkem... 5 CRM SYSTÉM KORMORÁN UŽIVATELSKÁ PŘÍRUČKA Obsah 1 Základní práce se systémem 3 1.1 Práce se záznamy................................. 3 1.2 Stránka Dnes.................................... 4 1.3 Kalendář......................................

Více

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování

Více

Projekt Obrázek strana 135

Projekt Obrázek strana 135 Projekt Obrázek strana 135 14. Projekt Obrázek 14.1. Základní popis, zadání úkolu Pracujeme na projektu Obrázek, který je ke stažení na http://java.vse.cz/. Po otevření v BlueJ vytvoříme instanci třídy

Více

1. Nastavení dokumentu

1. Nastavení dokumentu Obsah as a asta 2. Okno / více dokumentů otevírání, zavírání, vytváření nového, přepínání, ukládání 3. Barevný režim dokumentu 4. Zobrazení, vlastní pohledy 5. Objekty vkládání 1. Nastavení dokumentu Uprostřed

Více

Přehled probírané látky

Přehled probírané látky OOPR_04 1 Přehled probírané látky asociace (relace) mezi třídami popis množiny spojení mezi objekty skládání objektů - upřesněný typ asociace, vazba mezi objekty kompozice objektů (velmi pevná vazba mezi

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

01_Grafické rozhraní

01_Grafické rozhraní 01_Grafické rozhraní Jaké jsou základní rozdíly mezi konzolovou aplikací a aplikací s grafickým uživatelským rozhraním? Hlavní rozdíly mezi běžnou konzolovou aplikací a aplikací s GUI lze shrnout do dvou

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

Návrh a tvorba WWW stránek 1/8. Formuláře

Návrh a tvorba WWW stránek 1/8. Formuláře Návrh a tvorba WWW stránek 1/8 Formuláře význam předávání hodnot od uživatele skriptům mezi značkami a základní atributy action definuje obslužný skript, nelze v XHTML method metoda, kterou

Více

OOPR_05. Případové studie

OOPR_05. Případové studie OOPR_05 Případové studie 1 Přehled probírané látky příklad skládání objektů - čára příklad skládání objektů kompozice a agregace přetížené konstruktory pole jako datový atribut 2 Grafický objekt - čára

Více

VY_32_INOVACE_INF.08. Microsoft Windows II.

VY_32_INOVACE_INF.08. Microsoft Windows II. VY_32_INOVACE_INF.08 Microsoft Windows II. Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Jiří Kalous Základní a mateřská škola Bělá nad Radbuzou, 2011 INSTALACE WINDOWS 1. PRVOTNÍ PŘÍPRAVA

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text()); Anotace a Hibernate Aleš Nosek, Ondřej Vadinský, Daniel Krátký Anotace v Javě Anotace jsou novinkou v Javy verze 5. Anotace umožňují doplnit kód Javy o dodatečné informace. Zapisují se přímo do zdrojového

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu A Tutorial Advances in query languages for similarity-based databases George J. Klir Petr Krajča State University of New York (SUNY) Binghamton, New York 13902, USA gklir@binghamton.edu Palacky University,

Více

Změna vlastností kódem

Změna vlastností kódem Změna vlastností kódem - Metoda setjménovlastnosti(hodnota); - Zadání úkolu Změna vlastností kódem Práce s vlastnostmi Metody setxxx nastavení vlastnosti Metody getxxx zjištění hodnoty vlastnosti případně

Více

Seminář Java II p.1/43

Seminář Java II p.1/43 Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

Vytvoření pokročilé Fotogalerie v Drupalu - Views

Vytvoření pokročilé Fotogalerie v Drupalu - Views Vytvoření pokročilé Fotogalerie v Drupalu - Views Views Máme tři pohledy: gallery_photos, all_galeries, admin_gallery Buď je můžete vytvořit podle návodu níže, nebo importovat z přiložených txt souborů

Více

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

11 Diagram tříd, asociace, dědičnost, abstraktní třídy 11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,

Více

Nápověda k aplikaci GraphGUI

Nápověda k aplikaci GraphGUI Nápověda k aplikaci GraphGUI 1 APLIKACE Aplikace slouží pro zobrazování závislosti několika veličin s různými jednotkami a rozsahy na čase v jednom grafu. Do aplikace lze importovat data ze souborů různých

Více

Úvod do MS Access. Modelování v řízení. Ing. Petr Kalčev

Úvod do MS Access. Modelování v řízení. Ing. Petr Kalčev Úvod do MS Access Modelování v řízení Ing. Petr Kalčev Postup při tvorbě aplikace Vytvoření tabulek Vytvoření relací Vytvoření dotazů Vytvoření formulářů Vytvoření sestav Tabulky Slouží k definování polí,

Více

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Petr Blaha Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události Cykly Základní funkce (matematické, textové,

Více

43 HTML šablony. Záložka Šablony v systému

43 HTML šablony. Záložka Šablony v systému 43 HTML šablony Modul HTML šablony slouží ke správě šablon pro výstupy z informačního systému modularis ve formátu HTML. Modul umožňuje k šablonám doplňovat patičku, dokumentaci a vázat šablony na konkrétní

Více

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue. 23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,

Více

Dotyková obrázovká v prográmu TRIFID

Dotyková obrázovká v prográmu TRIFID Dotyková obrázovká v prográmu TRIFID V současné verzi je možné ovládat pouze klasický prodej, funkce pro variantu GASTRO (účtování na jednotlivé stoly, tisk do kuchyně) jsou zatím ve vývoji. Nastavení

Více

Manuál k programu KaraokeEditor

Manuál k programu KaraokeEditor Manuál k programu KaraokeEditor Co je KaraokeEditor? Program slouží pro editaci tagů v hudebních souborech formátu mp3. Tagy jsou doprovodné informace o písni, uložené přímo v mp3. Aplikace umí pracovat

Více

T-Mobile ProfiNet: Statistiky datových služeb

T-Mobile ProfiNet: Statistiky datových služeb T-Mobile ProfiNet: Statistiky datových služeb Přihlášení do aplikace Pro přihlášení do systému je potřeba do webového prohlížeče zadat URL http://profinetstats.t-mobile.cz/. Objeví se přihlašovací stránka:

Více

Vláknové programování část V

Vláknové programování část V Vláknové programování část V Lukáš Hejmánek, Petr Holub {xhejtman,hopet@ics.muni.cz Laboratoř pokročilých síťových technologií PV192 2014 03 25 1/25 Přehled přednášky Paměťový model Javy GUI v Javě Vlákna

Více

Vytvoření certifikační autority v programu XCA

Vytvoření certifikační autority v programu XCA Příloha č. 1 Vytvoření certifikační autority v programu XCA 1 Cíl dokumentu Cílem tohoto dokumentu je popsat postup pro vytvoření certifikační autority v programu XCA (http://xca.sourceforge.net) a následné

Více

Zápis programu v jazyce C#

Zápis programu v jazyce C# Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač

Více

Nástroje v InDesignu. Panel nástrojů 1. část. Nástroje otevřeme Okna Nástroje

Nástroje v InDesignu. Panel nástrojů 1. část. Nástroje otevřeme Okna Nástroje Nástroje v InDesignu Panel nástrojů 1. část Nástroje otevřeme Okna Nástroje Poklepem levé myši změníme panel nástrojů Nástroje v panelu nástrojů se používají k vybírání, úpravám a vytváření prvků stránek.

Více

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární

Více

Nápověda k používání mapové aplikace Katastrální mapy Obsah

Nápověda k používání mapové aplikace Katastrální mapy Obsah Nápověda k používání mapové aplikace Katastrální mapy Obsah Práce s mapou aplikací Marushka... 2 Přehledová mapa... 3 Změna měřítka... 4 Posun mapy... 5 Druhy map... 6 Doplňkové vrstvy... 7 Vyhledávání...

Více

Konvertor diakritiky 3. Instalace

Konvertor diakritiky 3. Instalace OBSAH Popis... 2 Ovládání aplikace... 3 Odstranění diakritických znamének... 4 Operace s textem... 4 Nastavení aplikace... 4 Písmo... 4 Jazyk... 4 Přidání dalšího jazyka do aplikace... 5 Znaky... 5 Instalace

Více

2 Grafický výstup s využitím knihovny

2 Grafický výstup s využitím knihovny 2 Grafický výstup s využitím knihovny Studijní cíl Tento blok je věnován základním principům při vytváření grafického výstupu pomocí standardních metod, které poskytuje grafické rozhraní. V textu budou

Více

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

DSL manuál. Ing. Jan Hranáč. 27. října 2010. V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v DSL manuál Ing. Jan Hranáč 27. října 2010 V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v současné době krátký) seznam vestavěných funkcí systému. 1 Vytvoření nového dobrodružství Nejprve

Více

Delphi popis prostředí

Delphi popis prostředí Delphi popis prostředí Delphi je komplexní vývojové prostředí, které slouží pro tvorbu aplikací. Řadí se mezi objektově orientované jazyky, protože podporuje koncepci skutečného objektového programování.

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné

Více

BALISTICKÝ MĚŘICÍ SYSTÉM

BALISTICKÝ MĚŘICÍ SYSTÉM BALISTICKÝ MĚŘICÍ SYSTÉM UŽIVATELSKÁ PŘÍRUČKA Verze 2.3 2007 OBSAH 1. ÚVOD... 5 2. HLAVNÍ OKNO... 6 3. MENU... 7 3.1 Soubor... 7 3.2 Měření...11 3.3 Zařízení...16 3.4 Graf...17 3.5 Pohled...17 1. ÚVOD

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

1. Spuštění programu. Poklepejte na ikonu Illustratoru na pracovní ploše nebo program spustíte přes nabídku Start > Programy > Adobe Illustrator

1. Spuštění programu. Poklepejte na ikonu Illustratoru na pracovní ploše nebo program spustíte přes nabídku Start > Programy > Adobe Illustrator Obsah a amu a 2 Pros s a amu 3 Nástroje s 4 Palety a 5 Ilustrované palety 6 Vrác ac a kontextové nab ky Existují dva hlavní typy programů pro vytváření a úpravy grafických dokumentů bitmapové (neboli rastrové)

Více

DPKOM_06 Dědičnost entit a zpětná volání posluchači

DPKOM_06 Dědičnost entit a zpětná volání posluchači DPKOM_06 Dědičnost entit a zpětná volání posluchači 1 Obsah přednášky Jedna tabulka pro hierarchii tříd Tabulka pro konkrétní třídu Tabulka pro podtřídu Neentitní základní třídy Události zpětného volání

Více

Cvičení č. 2 : POLITICKÁ MAPA VYBRANÉHO KONTINENTU

Cvičení č. 2 : POLITICKÁ MAPA VYBRANÉHO KONTINENTU Cvičení č. 2 : POLITICKÁ MAPA VYBRANÉHO KONTINENTU - Procvičení práce v programu AEJEE, tvorba vlastního projektu V tomto cvičení se naučíte vytvářet vlastní projekt. Hlavním cílem je naučit se přidat

Více

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www:

Více

Úvod do počítačových sítí

Úvod do počítačových sítí Úvod do počítačových sítí Jméno a příjmení: Jan Tichava Osobní číslo: Studijní skupina: středa, 3 4 Obor: INIB INF E-mail: jtichava@students.zcu.cz Datum odevzdání: 19.12.06 Základní charakteristika Jednoduchá

Více

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová Struktura třídy, operátory, jednoduché algoritmy, junit 2. cvičení Alena Buchalcevová Cíle cvičení seznámit se s rozhraním (interface) v Javě seznámit se s testováním při vývoji (makety, JUnit) naučit

Více

Tvorba www-stránek. Příkazy jazyka HTML. Budeme pracovat následovně: Základní struktura webové stránky. Příkazy sekce HEAD

Tvorba www-stránek. Příkazy jazyka HTML. Budeme pracovat následovně: Základní struktura webové stránky. Příkazy sekce HEAD Tvorba www-stránek Webové stránky jsou napsané pomocí jazyka HTML (HyperText Markup Language). Ke tvorbě webových stránek potřebujeme - speciální program umožňuje tvořit stránku bez znalostí HTML-kódu

Více

Používání sdíleného kalendáře v projektu Bioanalytické centrum

Používání sdíleného kalendáře v projektu Bioanalytické centrum Používání sdíleného kalendáře v projektu Bioanalytické centrum Google Kalendář Google Kalendář je dostupný z hlavní stránky www.google.cz, kde je odkaz Kalendář buď přímo v horní liště: Horní lišta www.google.cz

Více

WORD. (zobecněno pro verzi 2007)

WORD. (zobecněno pro verzi 2007) WORD (zobecněno pro verzi 2007) Program MS Word patří softwarově do skupiny uživatelských aplikací, které se nazývají textové editory. Slouží především k editacím či-li úpravám textů vč. vkládání grafických

Více

Návrh aplikace. Project Westpon. Inteligentní simulátor budov. Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich

Návrh aplikace. Project Westpon. Inteligentní simulátor budov. Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich Návrh aplikace Project Westpon Inteligentní simulátor budov Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich . Úvod.. Účel dokumentu Tento dokument má za účel detailně popsat návrh

Více

Jak na Prezi. Návod k základům práce v Prezi

Jak na Prezi. Návod k základům práce v Prezi Jak na Prezi Návod k základům práce v Prezi Existuje celá řada prostředí pro tvorbu prezentací. Jedním z nejvíce užívaných programů je Power Point z balíku MS OFFICE, jiným je například Macromedia Flash

Více

15. Projekt Kalkulačka

15. Projekt Kalkulačka Projekt Kalkulačka strana 143 15. Projekt Kalkulačka 15.1. Základní popis, zadání úkolu Pracujeme na projektu Kalkulačka, který je ke stažení na java.vse.cz. Po otevření v BlueJ vytvoříme instanci třídy

Více

Programovací software Oblast režimů Oblast nástrojů Složka aplikací pro různé funkce: Oblast tlačítek Tlačítko Loading (Načítání)

Programovací software Oblast režimů Oblast nástrojů Složka aplikací pro různé funkce: Oblast tlačítek Tlačítko Loading (Načítání) Programovací software 1. Struktura funkcí myši ErgoMedia 500 Hlavní obrazovka struktury funkcí Zobrazuje programované klávesy. Hlavní obrazovka myši ErgoMedia 500: Oblast režimů K dispozici jsou čtyři

Více

8. OKNA 73. obr. 1 Roletové menu "Okna"

8. OKNA 73. obr. 1 Roletové menu Okna 8. OKNA Obsah 8. OKNA 73 OBSAH 73 8.1 UKLÁDÁNÍ UŽIVATELSKÝCH OKEN 76 8.2 NAČÍTÁNÍ UŽIVATELSKÝCH OKEN 77 8.3 VLASTNOSTI OKEN 77 8.3.1 VLASTNOSTI ZÁLOŽKOVÉHO OKNA 78 8.4 VOLBA OKNA 78 8.5 ZRUŠENÍ OKNA 79

Více

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury,

Více

HiPath 3000/4000/5000 opticlient 130 V5.0. Zkrácený návod k použití

HiPath 3000/4000/5000 opticlient 130 V5.0. Zkrácený návod k použití HiPath 3000/4000/5000 opticlient 130 V5.0 Zkrácený návod k použití Informace v tomto dokumentu obsahují pouze obecné popisy popř. funkce, které nejsou při konkrétním použití vždy k dispozici v uvedené

Více

Dotykova obrazovka v programu TRIFID

Dotykova obrazovka v programu TRIFID Dotykova obrazovka v programu TRIFID V současném provedení je ve fázi testování, předpokládá se tedy její spouštění z hlavní nabídky programu TRIFID. K nastavení a spuštění je tedy nutné mít připojenou

Více

Manuál k aplikaci FieldGIS v.2.27

Manuál k aplikaci FieldGIS v.2.27 Manuál k aplikaci FieldGIS v.2.27 Petr Pala Copyright 2008 CENIA, laboratoř GIS 1. Úvod 1. Systémové požadavky 2. Části základního okna aplikace 1. Menu 1.1. File 1.2. Tools 1.3. Hlavní lišta 2. Editor

Více

1. Téma 12 - Textové soubory a výjimky

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více