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

Aplikace s grafickým uživatelským rozhraním

Aplikace s grafickým uživatelským rozhraním Aplikace s grafickým uživatelským rozhraním 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 1 Typy aplikací Konzolová

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

GUI v Javě a událostmi řízené programování

GUI v Javě a událostmi řízené programování GUI v Javě a událostmi řízené programování Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 6 B0B36PJV Programování v JAVA Jan Faigl, Jiří Vokřínek,

Více

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty. GUI v Javě a událostmi řízené programování Obsah přednášky GUI v Javě (připomínka) Návrhář GUI Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 4 A0B36PR2

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

GUI v Javě a událostmi řízené programování

GUI v Javě a událostmi řízené programování GUI v Javě a událostmi řízené programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 4 A0B36PR2 Programování 2 Jan Faigl, 2016 A0B36PR2 Přednáška

Více

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

Obsah přednášky. GUI v Javě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty. GUI v Javě a událostmi řízené programování Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 6 B0B36PJV Programování v JAVA Obsah přednášky GUI v Javě

Více

GUI v Javě a událostmi řízené programování

GUI v Javě a událostmi řízené programování GUI v Javě a událostmi řízené programování Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 6 B0B36PJV Programování v JAVA Jan Faigl, Jiří Vokřínek,

Více

GUI v Javě (připomínka) Návrhář GUI Příklad aplikace MVC Model-View-Controller Události Vnitřní třídy. MVC Model-View-Controller

GUI v Javě (připomínka) Návrhář GUI Příklad aplikace MVC Model-View-Controller Události Vnitřní třídy. MVC Model-View-Controller GUI v Javě a událostmi řízené programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 4 A0B36PR2 Programování 2 Obsah přednášky GUI v Javě (připomínka)

Více

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ 8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ Abstract Window Toolkit (AWT) je část Java Core API, kterou tvoří balíky: java.awt, java.awt.event (od JDK 1.1), java.awt.image, java.awt.datatransfer (od JDK 1.1). AWT

Více

GUI v Javě. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 B0B36PJV Programování v JAVA

GUI v Javě. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 B0B36PJV Programování v JAVA GUI v Javě Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 5 B0B36PJV Programování v JAVA Jan Faigl, Jiří Vokřínek, 2017 B0B36PJV Přednáška 5: GUI

Více

GUI v Javě. GUI v Javě GUI komponenty a kontejnery Dialogová okna Události a obsluha událostí z GUI

GUI v Javě. GUI v Javě GUI komponenty a kontejnery Dialogová okna Události a obsluha událostí z GUI GUI v Javě GUI v Javě Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 5 B0B36PJV Programování v JAVA GUI v Javě GUI komponenty a kontejnery Dialogová

Více

Události. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Události. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Události A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Zpracování událostí - obsah 1. Připomenutí GUI 2. Co to je událost 3. Koncepce zpracování událostí 4. Zpracování vlastností

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

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 ToolBar Menu soubor nový, otevřít, uložit, exportovat, konec...

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

GUI v Javě. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 B0B36PJV Programování v JAVA

GUI v Javě. Jiří Vokřínek. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 5 B0B36PJV Programování v JAVA GUI v Javě Jiří Vokřínek Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 5 B0B36PJV Programování v JAVA Jan Faigl, Jiří Vokřínek, 2017 B0B36PJV Přednáška 5: GUI

Více

2 Tvorba interaktivních grafických programů

2 Tvorba interaktivních grafických programů 2 Tvorba interaktivních grafických programů Studijní cíl Tento blok je věnován vytváření interaktivních grafických programů. Podrobně bude vysvětleno, jakým způsobem je možno programově reagovat na události

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

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém

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

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

Č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

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

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Diplomová práce Plugin do Eclipse pro tvorbu GUI s konfigurovatelným generováním zdrojového kódu

Diplomová práce Plugin do Eclipse pro tvorbu GUI s konfigurovatelným generováním zdrojového kódu Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Diplomová práce Plugin do Eclipse pro tvorbu GUI s konfigurovatelným generováním zdrojového kódu Plzeň,

Více

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných Tematický celek 03 3.1 Proměnné Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace. 3.1.1 Deklarace proměnných Dim jméno_proměnné [As typ] - deklarace uvnitř procedury platí pouze pro

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

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox 02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů

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

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

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

JAVA JavaBeans Java, letní semestr

JAVA JavaBeans Java, letní semestr JAVA JavaBeans Komponenty přehled komponenta znovupoužitelný kus kódu charakterizována službami, které poskytuje a požaduje není přesná definice komponentové modely JavaBeans Enterprise JavaBeans (EJB)

Více

Swing. Přehled komponent. Java UI, letní semestr 2017/2018 1

Swing. Přehled komponent. Java UI, letní semestr 2017/2018 1 Swing Přehled komponent 1 Label třída JLabel pro zobrazení krátkého textu obrázku obojího 2 Tlačítka mnoho druhů tlačítek (buttons) všechna dědí od AbstractButton normální tlačítko (JButton) "klikací"

Více

JAVA GUI Java, zimní semestr

JAVA GUI Java, zimní semestr JAVA GUI 1 Přehled JDK1.0 AWT Abstract Window Toolkit cíl na všech platformách dobře vypadající GUI moc se nepovedlo různá omezení (např. jen 4 fonty) špatně se používalo "ne-objektový" přístup JDK1.1

Více

Jazyk C# (seminář 6)

Jazyk C# (seminář 6) Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí

Více

Část I Příklad - Generické typy, iterátor

Část I Příklad - Generické typy, iterátor Část 1 Příklad - Generické typy, iterátor GUI v Javě Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 3 A0B36PR2 Programování 2 Generické typy Příklad

Více

Java - výjimky. private void vstup() throws IOException {... }

Java - výjimky. private void vstup() throws IOException {... } Java - výjimky Tato kapitola ukazuje na několika příkladech práci s výjimkami v Javě. Klíčové pojmy: Výjimka, hierarchie výjimek, zachytávání výjimek, blok try-catch, tvorba vlastních výjimek, propagace

Více

GUI v Javě. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 3 A0B36PR2 Programování 2

GUI v Javě. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 3 A0B36PR2 Programování 2 GUI v Javě Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 3 A0B36PR2 Programování 2 Jan Faigl, 2016 A0B36PR2 Přednáška 3: GUI v Javě 1 / 56 Část 1 Příklad

Více

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)

Více

Kurz Databáze. Obsah. Formuláře. Práce s daty. Doc. Ing. Radim Farana, CSc.

Kurz Databáze. Obsah. Formuláře. Práce s daty. Doc. Ing. Radim Farana, CSc. Kurz Databáze Práce s daty Doc. Ing. Radim Farana, CSc. Obsah Formuláře, typy formulářů, sekce formuláře. Objekty formuláře. Vytváření formulářů pomocí průvodce. Výběr dat, virtuální položky, agregace

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Část I Příklad - Generické typy, iterátor

Část I Příklad - Generické typy, iterátor Část 1 Příklad - Generické typy, iterátor Část 2 Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 3 A0B36PR2 Programování 2 Generické typy Příklad - Spojový

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Jazyk C# (seminář 3)

Jazyk C# (seminář 3) Jazyk C# (seminář 3) Pavel Procházka KMI October 8, 2014 Motivace Největší využití v programování okenních aplikací a GUI knihoven. Data reprezentujeme pomocí objektů (tříd), máme tedy ucelený pohled na

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

Úvod do programování - Java. Cvičení č.4

Úvod do programování - Java. Cvičení č.4 Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení

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

IRAE 07/08 Přednáška č. 7. Začátek (head)

IRAE 07/08 Přednáška č. 7. Začátek (head) Fronta (Queue) FIFO First In First Out (první dovnitř první ven) Vložení položky (Enqueue) Vyjmutí položky (Dequeue) Přidávání prvků Konec (Tail) Začátek (head) na jedné straně (konec) Odebírání prvků

Více

GUI v Javě. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 3 A0B36PR2 Programování 2

GUI v Javě. Jan Faigl. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze. Přednáška 3 A0B36PR2 Programování 2 GUI v Javě Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 3 A0B36PR2 Programování 2 Jan Faigl, 2016 A0B36PR2 Přednáška 3: GUI v Javě 1 / 56 Část 1 Příklad

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

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

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

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

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

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda Anotace sady: Úvod do objektově orientovaného programování, VY_32_INOVACE_PRG_OOP_01 Autor: Blanka Sadovská Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda Druh učebního materiálu:

Více

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

Více

Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy

Úloha 1. Text úlohy. Vyberte jednu z nabízených možností: NEPRAVDA. PRAVDA Úloha 2. Text úlohy Úloha 1 Úloha 2 Otázka se týká předchozího kódu. Určete pravdivost následujícího tvrzení: "Pro každý bod vytvoří úsečku mezi ním a středem panelu." Úloha 3 Otázka se týká předchozího kódu. Určete pravdivost

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

GUI v Jav a událostmi ízené programování

GUI v Jav a událostmi ízené programování GUI v Jav a událostmi ízené programování Ji í Vok ínek Katedra po íta Fakulta elektrotechnická ƒeské vysoké u ení technické v Praze P edná²ka 6 B6B36PJV Programování v JAVA Jan Faigl, Ji í Vok ínek, 2016

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

Chain of responsibility

Chain of responsibility Chain of responsibility Chain of responsibility n Známý jako n Účel q český překlad řetěz(ec) odpovědnosti q umožnit zasílání požadavků (zpráv) neznámým příjemcům q příjemci tvoří frontu è předávají si

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

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

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

VIII. Seminář Java VIII p.1/36

VIII. Seminář Java VIII p.1/36 Seminář Java VIII Seminář Java VIII p1/36 Rekapitulace Grafické uživatelské rozhraní Swing vs AWT Aplety Aplikační rámec, JApplet spouštení v prohlížeči, Appletviewer Událostní model knihovny Swing události

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

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

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

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory 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 Kolekce ::= homogenní sada prvků

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

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

GUI. Systémová integrace pro desktopové aplikace

GUI. Systémová integrace pro desktopové aplikace GUI Systémová integrace pro desktopové aplikace 1 java.awt.desktop systémová integrace desktopových aplikací static boolean isdesktopsupported() test zda je integrace k dispozici static Desktop getdesktop()

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

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

Základy objektové orientace I. Únor 2010

Základy objektové orientace I. Únor 2010 Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných

Více

Seminář Java IV p.1/38

Seminář Java IV p.1/38 Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly

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

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

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová Programové konvence, dokumentace a ladění 2. přednáška Alena Buchalcevová Proč dodržovat programové konvence? velkou část životního cyklu softwaru tvoří údržba údržbu provádí většinou někdo jiný než autor

Více

Uživatelská příručka Autor: Martin Fiala

Uživatelská příručka Autor: Martin Fiala 1 Uživatelská příručka Autor: Martin Fiala Vzhledem k tomu, že navržený program nefunguje samostatně a jedná se pouze o část implementovanou do pluginu BJ2NB vyvíjeného na Vysoké škole ekonomické, je nutné

Více

První kroky s METEL IEC IDE

První kroky s METEL IEC IDE První kroky s poskytuje programování v IEC 61131-3 jazycích, podporuje jak grafickou tak textovou podobu. Umožňuje vytvářet, upravovat a ladit IEC 61131-3 (ST, LD, IL, FBD) programy pro řídicí jednotky

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

XHTML 1. Formuláře. Element form. <form>... </form>

XHTML 1. Formuláře. Element form. <form>... </form> XHTML 1 Formuláře Činnost: - zadávání informací do elektronického obchodu; - odesílání jména a dalších informací pro on-line službu; - nákup letenek a cestovních služeb; - nákup dalšího zboží a služeb,

Více

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC OMO 4 - Creational design patterns A Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC Ing. David Kadleček, PhD. kadlecd@fel.cvut.cz, david.kadlecek@cz.ibm.com 1 Creational

Více

Základy CSS (3. přednáška)

Základy CSS (3. přednáška) Základy CSS (3. přednáška) Kaskádové styly k čemu jsou HTML definuje strukturu, CSS definuje vzhled. CSS stylesheet soubor pravidel určujících vzhled jednotlivých prvků dokumentu CSS pravidlo sestává ze

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

APLIKACE V JAZYCE JAVA OVLÁDANÉ PŘES WWW

APLIKACE V JAZYCE JAVA OVLÁDANÉ PŘES WWW VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV INFORMAČNÍCH SYSTÉMŮ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS APLIKACE V JAZYCE

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

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

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

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

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