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



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

2 Tvorba interaktivních grafických programů

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.

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

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ě a událostmi řízené programování. Základní prvky grafického rozhraní. Základní komponenty.

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

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í

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.

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

8. Grafické uživatelské rozhraní

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

8. GRAFICKÉ UŽIVATELSKÉ ROZHRANÍ

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

Práce se soubory v Javě

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

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

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

Změna vlastností kódem

JAVA JavaBeans Java, letní semestr

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

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

01_Grafické rozhraní

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah:

20. Projekt Domácí mediotéka

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

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

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 v Javě GUI komponenty a kontejnery Dialogová okna Události a obsluha událostí z GUI

JAVA JavaBeans Java, letní semestr 2018

KMI / TMA. Tvorba mobilních aplikací. 8. seminář ZS 2017/2018 ČTVRTEK 13:15-15:45

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

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Začínáme s vývojem pro Android

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

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

Algoritmizace a programování

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

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

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

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

Grafické rozhraní. Grafické rozhraní. Základní pravidla pro návrh GUI. Princip GUI aplikace. Úvod do tvorby GUI aplikací.

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

C# konzole Podíl dvou čísel, podmínka IF

Technologie JavaBeans

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

Remote Method Invocation RMI

Praktické šifrování dat pomocí programu PGP

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský

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

Abstraktní třída a rozhraní

Práce s programem MPVaK

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

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

Projekt Obrázek strana 135

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

Programování v jazyce VISUAL BASIC.NET

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

Registrační číslo projektu: Škola adresa: Šablona: Ověření ve výuce Pořadové číslo hodiny: Třída: Předmět: Název: MS Excel I Anotace:

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

Výčtový typ strana 67

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

Programování v jazyku Java GUI, události

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

Programovací jazyk Java

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

GUI. Systémová integrace pro desktopové aplikace

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

DUM č. 5 v sadě. 30. Inf-6 Imagine Logo a animace pro nižší gymnázium

RMI - Distribuované objekty v Javě

Soketové připojení Klient InetAddress getbyname() UnknowHostException SecurityException Socket getinputstream() getoutputstream() IOException Server

Výchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo

Středoškolská technika 2017 PROGRAM NA GENEROVÁNÍ PRVOČÍSEL

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

Daisy expert stručný manuál

SOFTWARE - programové vybavení počítače (nemůžeme si na něj sáhnout) Bez SW nemůže PC fungovat. Schéma počítače:

17. Projekt Trojúhelníky

GIS Mikroregionu Telčsko

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ v Praze Ú12110 Ústav přístrojové a řídící techniky

Vytváření a použití knihoven tříd

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

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Radek Havlík [ÚLOHA 32 ODKAZY A TEXTY]

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

1. Programování proti rozhraní

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Jazyk C# (seminář 6)

STATISTICA Téma 7. Testy na základě více než 2 výběrů

Komponenty v.net. Obsah přednášky

Uživatelská příručka internetové aplikace

Dynamicky vázané metody. Pozdní vazba, virtuální metody

1 Nejkratší cesta grafem

Druhy souborů. textové. binární. nestrukturované txt strukturované - ini, xml, csv. veřejné bmp, jpg, wav proprietární docx, cdr, psd

Návod k práci s programem MMPI-2

Transkript:

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 používaných událostí. Klíčové pojmy: Událost, obsluha událostí, listenery = posluchači událostí Událostmi řízené programování u konzolové aplikace spustíme program a jeho kód rozhoduje o pořadí provádění jednotlivých činností na rozdíl od toho je chod programu založeného na oknech řízen tím, co s aplikací provádí uživatel program po spuštění nic nedělá, jen čeká na nějakou akci, na nějakou událost událost vzniká jako důsledek činnosti uživatele, programu nebo operačního systému událost (event) jsou signály přijímané programem od operačního systému, většinou na základě akcí uživatele uživatel komunikuje s aplikací pomocí grafických komponent umístěných v okně příkladem událostí jsou: stisk tlačítka, posun myši, stisk klávesy, maximalizace, minimalizace okna, zavření okna, změna rozměrů okna,... když se nějaké komponentě přihodí nějaká událost, může tato komponenta o tom poslat zprávu nějaké jiné grafické komponentě událost způsobí zaslání zprávy posluchači druhá komponenta pak na zprávu může nějak reagovat (změní svoji barvu, svůj text, zmizí nebo se objeví, ) Zpracování = obsluha událostí Listener = posluchač události na formuláři jsme vytvořili několik tlačítek, zatím jsme jim však nepřiřadili žádnou akci, po stisknutí tlačítka se nic neděje každá z vizuálních komponent má vlastní události, na které můžeme reagovat, tzv. je obsloužit (tlačítko můžeme stisknout, radiobutton můžeme vybrat nebo naopak zrušit jeho výběr, textové pole může získat nebo ztratit zaměření = fokus,...) v Javě existují speciální instance, které události zachycují, nazýváme je listenery, tj. posluchači 28.3.2011 Java - GUI - události 1/6

určitý typ listeneru může naslouchat pouze jemu odpovídajícímu typu události, listenery tedy fungují adresně instance, která chce přijímat události, se musí nejprve jako posluchač zaregistrovat je to jako na takové zvláštní vojně: vojáci (posluchači události) si na začátku vyberou velícího důstojníka (zdroj události), kterého chtějí poslouchat, zaregistrují se u něj také si vyberou událost, na jakou budou reagovat (třeba jen na pokyny hlasem nebo jen na pokyny rukama, nebudou reagovat na všechny projevy velícího důstojníka) posluchači událostí v Javě to provedou pomocí metody addxxxlistener(), kde XXX představuje typ události (tady stisk, přejetí myší, ) zaregistrovaný objekt musí implementovat rozhraní XXXListener (voják se zaváže, že dokáže reagovat na určitý druh příkazu, že když příkaz např. uslyší, něco udělá) vojáci (posluchači události) pak jen stojí a čekají, až jejich důstojník jim zadá příkaz domluveným způsobem (např. hlasem), a ten pak provedou na nic jiného, než na co se dohodli, nereagují, je zbytečné, aby důstojník běhal okolo a mával rukama, správným posluchačům je to jedno Třídy událostí když vznikne nová událost, vznikne nová instance události zdroje události jsou potomky třídy java.awt.event instance událostí jsou instancemi odpovídajících tříd událostí, XXXEvent obslužný kód je psán do metod, které nazýváme handlery handleru je předán také objekt události, z jehož vlastností můžeme získat cenné informace Handler metoda ošetřující danou událost v handleru provedeme obsluhu události, tj. nějakým způsobem na ní reagujeme postupujeme tak, že zjistíme název rozhraní XXX pro listener zvoleného objektu (na základě typu události, kterou budeme ošetřovat), např. ActionListener (akce) následně nalezneme jména metod tohoto rozhraní (jejich počet bývá různý dle typu události) a všechny je implementujeme, např. actionperformed() metody nemůžeme přetěžovat, pouze předefinovat, smíme je tedy implementovat pouze jednou odkaz na instanci třídy, jejíž jméno se shoduje s typem události, předáváme jako formální parametr handleru ošetřujícímu tuto událost. 28.3.2011 Java - GUI - události 2/6

Seznam metod a rozhraní Přehled nejčastěji používaných událostí, rozhraní a jejich metod Provedení akce, např. stisk tlačítka ActionEvent ActionListener actionperformed() Změna stavu komponenty ComponentEvent ComponentListener componenthidden() componentmoved() componentresized() componentshown() Detekce přidání/odebrání komponenty ContainerEvent ContainerListener containeradded() containerremoved() Změna zaměření komponenty FocusEvent FocusListener focusgained() focuslost() Vybrání komponenty ItemEvent ItemListener itemstatechanged() Práce s klávesnicí KeyEvent KeyListener keypressed() keyreleased() keytyped() Práce s tlačítky myši MouseEvent MouseListener mouseclicked() mouseentered() mouseexited() mousepressed() mousereleased() Změna stavu okna WindowEvent WindowListener windowactivated() windowclosed() windowclosing() windowdeactivated() windowopened() Změna zaměření okna WindowFocusEvent WindowFocusListener windowfocusgained() WindowFocusLost() Pohyb myši MouseMotionEvent MouseMotionListener mousemotiondragged() mousemotionmoved() Práce s rolovacím kolečkem myši MouseWheelEvent MouseWheelListener mousewheelmoved() 28.3.2011 Java - GUI - události 3/6

Příklad na formuláři máme 2 tlačítka 1 label, jehož obsah se bude měnit podle toho, které tlačítko stiskneme v tomto případě použijeme rozhraní ActionListener pro práci s událostmi je nutno importovat balíček java.awt.event.* s příslušnými událostmi poté prostřednictvím metody addactionlistener() zaregistrujeme posluchače pro příslušnou komponentu (objekt třídy ZmenaNapisu): but1.addactionlistener(new ZmenaNapisu()); but2.addactionlistener(new ZmenaNapisu()); metoda actionperformed() se ve třídě smí vyskytnout pouze jednou, proto používáme vnitřní třídy vnitřní třída, jejíž objekt reaguje na událost, musí implementovat příslušné rozhraní, v tomto případě ActionListener tím se třída zaváže přepsat metodu actionperformed() ošetřující událost Action do této metody napíšeme obsluhu události stisku tlačítka: z objektu události e zjistíme, které tlačítko událost způsobilo text tlačítka nastavíme jako text labelu: class ZmenaNapisu implements ActionListener { JButton zdroj = (JButton)e.getSource(); String napis = zdroj.gettext(); lab.settext(napis); totéž mohu napsat za pomoci anonymních vnitřních tříd: ); ); public void tlacitkostisknuto(actionevent e) { String napis = ((JButton)e.getSource()).getText(); lab.settext(napis); pokud program obsahuje anonymní vnitřní třídu, vznikají při jeho překladu soubory obsahující před příponou class znak $, které obsahují přeložené kódy anonymních vnitřních tříd 28.3.2011 Java - GUI - události 4/6

Několik posluchačů téže události často potřebujeme, aby jedna událost měla více posluchačů, např. při stisku tlačítka potřebujeme, aby se provedlo několik různých činností, příklad pak může vypadat třeba takto: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Okno extends JFrame { Container obsah; JButton but1, but2; JLabel lab; JTextField text; public Okno() { inicializaceokna(); obsahokna(); zviditelneniokna(); public void inicializaceokna() { this.setsize(300, 200); this.settitle("moje první okno"); this.setlocation(100,100); this.setlayout(new FlowLayout()); obsah = this.getcontentpane(); public void obsahokna() { text = new JTextField("sem něco napiš"); but1 = new JButton("kopírovat"); but2 = new JButton("smazat"); lab = new JLabel("tady se to bude měnit"); obsah.add(text); obsah.add(but1); obsah.add(but2); obsah.add(lab); ); ); 28.3.2011 Java - GUI - události 5/6

public void tlacitkostisknuto(actionevent e) { String akce = ((JButton)e.getSource()).getText(); String napis = text.gettext(); if (akce.equals("kopírovat")) lab.settext(napis); else lab.settext(""); public void zviditelneniokna() { this.setdefaultcloseoperation(jframe.exit_on_close); this.setvisible(true); 28.3.2011 Java - GUI - události 6/6