Grafikus felhasználói felületek, eseménykezelés

Hasonló dokumentumok
Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Programozási technológia

Programozási technológia I. programból! A Gomb4 megoldásból induljunk ki!

Java felhasználói felület

Már megismert fogalmak áttekintése

Swing GUI készítése NetBeans IDE segítségével

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Felhasználói Kézikönyv

Programozási technológia

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

Java és web programozás

Szoftvertechnológia alapjai Java előadások

Bevezetés a Python programozási nyelvbe

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Osztályok. 4. gyakorlat

Grafikus felhasználói felület (GUI) létrehozása A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása

Táblázatok. Táblázatok beszúrása. Cellák kijelölése

C++ programozási nyelv

Programozási alapismeretek 4.

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Concurrency in Swing

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Programozási nyelvek Java

OOP: Java 8.Gy: Abstract osztályok, interfészek

Programozási nyelvek Java

3. Osztályok II. Programozás II

Java Programozás 11. Ea: MVC modell

Grafikus felületek a programozó szempontjából grafikus elemek absztrakt reprezentációja az egyes elemek tulajdonságait leíró adatstruktúrák.

Java programozási nyelv 4. rész Osztályok II.

Broadcast Service Widget

Interfészek. PPT 2007/2008 tavasz.

Programozás C++ -ban 2007/7

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Abstract osztályok és interface-ek. 7-dik gyakorlat

ISA szimulátor objektum-orientált modell (C++)

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben

Távollét, szabadság szabály létrehozása, kezelése a GroupWise-ban

Objektumorientált programozás C# nyelven

és az instanceof operátor

SMS küldő központ Leírás

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

A Java nyelv. Dialógus ablakok. Elek Tibor

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

JAVA PROGRAMOZÁS 2.ELŐADÁS

Objektumok inicializálása

BME MOGI Gépészeti informatika 8.

DebitTray program Leírás

7. Előadás Grafikus felhasználói felületek.

Java felhasználói felület

Pénzügyi algoritmusok

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Cikk előkalkuláció - Művelet - Egyéb fix és változó költségek

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows7 operációs rendszer és Internet Explorer 8-es verziójú böngésző esetén

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

ELTE SAP Excellence Center Oktatóanyag 1

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Elmib Önkormányzati hibabejelentő. Felhasználói kézikönyv v1.0

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

ContractTray program Leírás

Android Commander Felhasználói kézikönyv

Programozási nyelvek Java

Kivételkezelés a C++ nyelvben Bevezetés

Bevezetés, a C++ osztályok. Pere László

JAVA PROGRAMOZÁS 5.ELŐADÁS

VI. Grafikus Java alkalmazások

A program telepítése

Java V. Osztályszint. lyszintű ű tagok. Példányváltozó. Osztályváltozó. Általános Informatikai Tanszék Utolsó módosítás:

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Objektum orientált kiterjesztés A+ programozási nyelvhez

Programozás III GRAFIKA RAJZOLÁS SWING FELÜLETEN RAJZOLÁS GRAFIKA HASZNÁLATA. Rajzolni az awt csomag Graphics osztályának metódusaival tudunk.

Programozás II. ATM példa Dr. Iványi Péter

Win-Tax évi ös verzió

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

"Eseményekre imm/connection Server scriptek futtatása

Operációs rendszerek. Tanmenet

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

A CAPICOM ActiveX komponens telepítésének és használatának leírása Windows 7 operációs rendszer és Internet Explorer 9 verziójú böngésző esetén

4. Öröklődés. Programozás II

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

Akciók, diavetítés. 1. ábra Akciógombok. A lap két regiszterfülből áll, ezek a Kattintásra és az Áthaladáskor. Nézzük meg először az elsőt!

OOP #14 (referencia-elv)

Objektumorientált programozás C# nyelven

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Globális operátor overloading

Átírás:

Programozási Grafikus felhasználói felületek, eseménykezelés alapjai Informatikai Kar Eötvös Loránd Tudományegyetem 1

Tartalom 1 2 alapjai 3 alapjai 2

alapjai Egészítsük ki a már korábban elkészített Számláló alkalmazásunkat úgy, hogy az tartalmazzon egy menüt, amiben nullázhatjuk a számláló értékét, illetve kiléphetünk a programból, valamint külön címkén jelenítsük meg a kattintások számát. 3

- menüsor felépítése JMenuBar add alapjai JMenu add addseparator() JMenuItem separator 4

sor komponensek műveletei alapjai JMenuBar Általában a program ablakának tetején helyezkedik el, elemei a menük, beállítani egy JFrame-en belül a setjmenubar()-al lehet JMenu konstruktor: paraméter a név setmnemonic: paraméter a kiválasztó billentyű JMenuItem konstruktor: paramétere egy AbstractAction-ből származtatott objektum (vagy név, ikon; de ekkor eseménykezelőt hozzá kell venni) setmnemonic: paraméter a menün belüli kiválasztó billentyű setaccelerator: a gyorsbillentyű kódja 5

- menü komponensek hierarchiája alapjai 6

- Megvalósítás JMenuBar menubar = new JMenuBar(); JMenu menutevékenység = new JMenu("Tevékenységek"); menutevékenység.setmnemonic( T ); alapjai 7 JMenuItem menunullázás = new JMenuItem(new AbstractAction() { @Override public void actionperformed(actionevent e) {... } }); menunullázás.settext("nullázás"); menunullázás.setmnemonic( N ); menunullázás.setaccelerator(keystroke.getkeystroke(keyevent.vk_o, KeyEvent.CTRL_MASK) JMenuItem menukilépés = new JMenuItem(new AbstractAction() { @Override public void actionperformed(actionevent e) {... } }); menukilépés.settext("kilépés"); menukilépés.setmnemonic( K ); menukilépés.setaccelerator(keystroke.getkeystroke(keyevent.vk_x, KeyEvent.ALT_MASK)); menutevékenység.add(menunullázás); menutevékenység.addseparator(); menutevékenység.add(menukilépés); menubar.add(menutevékenység); setjmenubar(menubar);... setvisible(true);

sor - Opcionális menüelem alapjai Változtassuk meg a programot úgy, hogy csak akkor lehessen a menüből nullázni, ha a kattintások száma nem nulla! Ehhez a JMenuItem setenabled műveletét használhatjuk Engedélyezés: Kezdetben letiltjuk a menüpontot (a létrehozásakor) Kattintás esetén engedélyezzük a menüpontot (kattintás eseménykezelőjében) Nullázás esetén letiltjuk a menüpontot (nullázás eseménykezelőjében) 8

alapjai kezelése A felület elemei közül több komponens bizonyos formában kezeli az egeret (pl. gombok, listák a kattintást, görgetést a görgetősávok). Ha eltérő kezelés, illetve új esemény figyelése szükséges, akkor egéresemény figyelőt kell a komponenshez rendelni: addmouselistener paramétere egy MouseListener interfészt megvalósító objektum, amely kezeli a az egérgomb (lenyomás, felengedés, kattintás) és területet váltó (belépés, elhagyás) eseményeket addmousemotionlistener paramétere egy MouseMotionListener interfészt megvalósító objektum, amely kezeli az egér húzását addmousewheellistener paramétere egy MouseWheelListener interfészt megvalósító objektum, amely kezeli az egér görgető gombjának eseményeit 9

MouseAdapter osztály alapjai Mindhárom interfészt megvalósítja (MouseListener, MouseMotionListener, MouseWheelListener) Ha nem akarunk mindenhez megvalósítást írni, akkor célszerű ebből származtatni, illetve ha több interfész műveleteire van szükségünk Görgetés esetén egy MouseWheelEvent objektumot kapunk, amelytől lekérdehető például a görgetés iránya (+/- 1-et kapunk). Ez a művelet minden egyes elforgatás hatására meghívódik, azaz egy 5 kattanásos" lefele görgetésnél 5x hívódik meg +1 értékkel! 10 public class ÜresKeret extends JFrame{ private final MouseAdapter egéradapter = new MouseAdapter() {...} public ÜresKeret(){... addmouselistener(egéradapter); addmousemotionlistener(egéradapter); addmousewheellistener(egéradapter);... } }

alapjai alapjai Az eseménykezeléssel működő programok alapötlete az, hogy a program futása közben események hatására mennek végbe bizonyos folyamatok Események váltódnak ki, melyekre az reagálnak Egy esemény a program bármely részében kiváltódhat, az erre reagáló eseménykezelő pedig tipikusan a program egy teljesen más részében fut le Objektumorientált programozási nyelvben objektumok és függvényeik segítségével valósul meg 11

alapjai Minden kiváltott eseményhez tartozik egy eseményobjektum Az eseményobjektum hordozza az esemény tulajdonságait az objektum saját változói segítségével Rendelkezik egy referenciával arról is, hogy hol váltódott ki az esemény másnéven forrás (source) A hasonló típusú eseményekhez természetesen létrehozható egy megfelelő Java-ban az események ősosztálya a java.util.eventobject osztály, tartalmazza a forrás kezelését 12

alapjai 13 Alkalmas egy adott típusú esemény kezelésére, azaz reagálni arra, ha az esemény kiváltódik Rendelkezik egy vagy több eseménykezelő függvénnyel, ahol mind 1-1 esemény kezelésére szolgál A függvény(ek) megkapja/megkapják a kiváltott eseményobjektumot Az eseményobjektum forrása és tulajdonságai alapján és persze a saját feladatának megfelelően végzi el az esemény kezelését A hasonló típusú eseménykezelő objektumok számára természetesen létrehozható egy megfelelő eseménykezelő osztály Java-ban az a java.util.eventlistener interfészből származnak, tipikusan maguk is csak interfészek, hiszen az eseménykezelő függvények konkrét működése általában nem ismert

alapjai Egy eseménykezelő függvény egy esemény kezelésére szolgál, tartalmazza azt a tevékenységet, amelyet az adott eseményre reagálásképp végre kell hajtani Paraméterként megkapja a kiváltott eseményt, amelyre éppen reagálni kell, azaz amelyet kezelni kell Működése közben kiválthat más eseményeket is 14

alapjai Egy esemény kiváltásakor ismerni kell az eseményt kezelő objektumokat Az esemény kiváltásának első lépése az eseményobjektum megkonstruálása (forrásként rendszerint beállítható a this referencia) Második lépésként az eseménykezelő objektumok eseménykezelő függvényeinek meghívása történik az eseményobjektum átadásával Az esemény kezelése az eseménykezelő függvényben történik, tehát ezen függvények törzsét, működését kell megadni 15

alapjai Ahhoz, hogy egy esemény kiváltásának pillanatában ismerjük az et, össze kell kapcsolni azokat egymással Tevékenységek: regisztráljuk az eseménykezelőt az eseménynél az eseménykezelő feliratkozik az eseményre az eseménykezelőt hozzárendeljük az eseményhez 16

alapjai 17

alapjai Bizonyos fogalomkörökben szokás az eseménykezelő függvényeket Callback függvényeknek is nevezni Az események logikailag két csoportba sorolhatók: felhasználói interakció eredménye rendszerszintű értesítés" A felhasználói interakciók kezelésére már láttunk példát a kattintások számlálása, ablak bezárása, egér mozgatása stb. során Ugyanakkor az ablak bezárását nem csak a felhasználó kezdeményezheti, hanem például rendszer frissítéskor az operációs rendszer is küldhet ilyen értesítést, mielőtt automatikusan újraindul 18

felhasználása alapjai Az események felhasználásának egyik módja, hogy felhasználói interakciót fogadunk vele Az eseménykezelés másik nagy területe a blokkoló függvény hívások helyett úgy nevezett aszinkron hívások megvalósítása eseménykezelővel Az aszinkron hívás esetében nem várjuk meg az eredményt, hanem rögtön folytatjuk a munkát A hívás paramétereként megadjuk azt az eseménykezelőt, amelyet majd a rendszer meghívhat, ha végzett a kért művelettel Ez az aszinkron hatás mindkét irányban működhet, azaz az esemény kiváltója is nyugodtan folytathatja a munkáját, nem kell megvárnia az esemény lekezelését A módszer alkalmazásánál körültekintően kell eljárni az objektumok életciklusa miatt 19