JAVA PROGRAMOZÁS 5.ELŐADÁS



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

VI. Grafikus Java alkalmazások

Gábor Dénes Főiskola (IAI) Programozási technológia (Java) - II. / 1

JAVA PROGRAMOZÁS 3.ELŐADÁS

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

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

Java programozási nyelv 8. rész Grafikus felhasználói felület

Szoftvertechnológia alapjai Java előadások

Java felhasználói felület

JAVA PROGRAMOZÁS 4.ELŐADÁS

Eseménykezelés Java környezetben, AWT alapok

- Alkalmazásfejlesztési szemlélet megismerése - Java GUI készítés bemutatása Swing-ben - Órai feladat megoldása

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

JAVA PROGRAMOZÁS 2.ELŐADÁS

Java tutorial Grafikus felhaszna loi feluletek

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Programozási technológia

Swing. (A javax.swing csomag)

Java felhasználói felület

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.

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

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

Példaprogram - 2. Objektum-orientált programozás Java és C++ nyelven. Példaprogram. Azonosítók. Dr. Rohonczy János. Azonosítók

Java Programozás 8. Ea: GUI. Graphical User Interface

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Java Programozás 3. Gy: Java GUI. Swing, AWT

Java felhasználói felület

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

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Dr. Iszály György Barna

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Grafikus felületek készítése 1.

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

A TANTÁRGY ADATLAPJA

Java Programozás 11. Ea: MVC modell

Objektumorientált programozás C# nyelven

ZH mintapélda. Feladat. Felület

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

A feladatok megoldásához felhasználandó osztályok leírásait az alábbi URL-en találja meg:

Java programozási nyelv 7. rész Java osztálykönyvtár 1.

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

C# osztályok. Krizsán Zoltán

JAVA PROGRAMOZÁS 8.ELŐADÁS

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

és az instanceof operátor

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

Access adatbázis elérése OLE DB-n keresztül

3. Gyakorlat Ismerkedés a Java nyelvvel

Objektumorientált szoftvertervezés

Objektumorientált szoftvertervezés

Hol hallod a sz hangot?

Java programozási nyelv 6. rész Java a gyakorlatban

Java felhasználói felület

4. Példa: Másodfokú egyenlet megoldása (program2_1.vi)

Programozás BMEKOKAA146. Dr. Bécsi Tamás 10. Előadás

Szakdolgozat. Készítette: Tuska Gábor

Számítógépes grafika

RIA Rich Internet Application

Borkereskedő. Dokumentáció a Programozási módszertan elmélete című tárgy beadandó programjához. Magyar Attila mattila@inf.elte.hu

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

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

SZERVERTELEPÍTÉS ÉS AKTIVÁLÁS

Elemi alkalmazások fejlesztése IV. Adatbázis-kezelés ActiveX vezérlıkkel - 1

Többrétegű műszaki nyilvántartás. NETinv

Java programozási nyelv 5. rész Osztályok III.

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

Programozási nyelvek Java

Tisztelt Ügyfelünk! Cégek / Cég törzsadatai / Cég törzsadatainak módosítása / TB fül

BEVEZETÉS A SULINET DIGITÁLIS TUDÁSBÁZIS (SDT) HASZNÁLATÁBA

Alkalmazásfejlesztési technológia. Vizsgakövetelmények. 1. Megjelenítési technikák. Magasabb szintű komponensek. Feladat - RendererTeszt

Idősoros elemző. Budapest, április

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

A Java nyelv. Dialógus ablakok. Elek Tibor

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

Kézikönyv. Keretmegbízás készítés és megrendelés

SAP vállalatirányítási rendszer alapjai

Objektum Orientált Szoftverfejlesztés (jegyzet)

Ez a bemutató a Silko&Co. Kft szellemi tulajdona. Bármilyen változtatás vagy másolás TILOS! és jogi következménnyel jár. A feltüntetett képek és

KIVÁ-s társaságok kezelése az NTAX-ban

117. AA Megoldó Alfréd AA 117.

Objektumorientált programozás C# nyelven

Java osztálykönyvtár és használata

Concurrency in Swing

Objektumorientált programozás C# nyelven

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

Bevezetés a C++ programozási nyelvbe

Informatika a felsőoktatásban 2008 Debrecen, augusztus A JAVA NYELV KIVÉTEL- ÉS ESEMÉNYKEZELÉSÉNEK BEMUTATÁSA AZ OKTATÁSBAN

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Készítette:

eseményvezérelt megoldások Vizuális programozás 5. előadás

OOP #14 (referencia-elv)

Termék portfólió bemutató a vákuum csomagolás szakértőjétől.

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

Objektumorientált programozás C# nyelven

BME MOGI Gépészeti informatika 8.

Tartalom Kontextus modellek Viselkedési modellek Adat-modellek Objektum-modellek CASE munkapadok (workbench)

Adatstruktúrák, algoritmusok, objektumok

14.2. OpenGL 3D: Mozgás a modellben

HASZNÁLATI ÚTMUTATÓ. Használati útmutató Vezeték nélküli készülék. Magyar. OM-GS (1)-DAIKIN Alkatrész szám: R A MODE TURBO TIMER

Átírás:

Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 5.ELŐADÁS 2014-2015 tavasz Elrendezésmenedzserek, események

2 Elrendezésmenedzserek

Elrendezésmenedzser 3 Minden konténernek van elrendezésmenedzsere Szükség szerint automatikusan elrendezi a konténer komponenseit, azok helyzetét és méretét A programozó az alapértelmezett elrendezésmenedzsert kicserélheti másra Több lehetőség: Előredefiniált osztályt választunk Egyéni rendezőt írunk Nem használunk elrendezés-menedzsert

Elrendezésmenedzser 4 Az ablak pack utasítására automatikusan elrendezi a konténer komponenseit, azok helyzetét és méretét, figyelembe véve a gyerekkomponensek előnyös méreteit (a direkt módon megadott méreteket felülbírálja)

Elrendezésmenedzser 5 Előredefiniált elrendezés-menedzserek: FlowLayout, GridLayout, BorderLayout, CardLayout, GridBagLayout A Container osztály definiál egy elrendezésmenedzsert (LayoutManager) A konténerbe került komponensek a menedzser felügyelete alá kerülnek A menedzser felülbírálható a setlayout( ) üzenettel vagy meg is szüntethető setlayout(null)

Elrendezésmenedzser 6 A LayoutManager interfész Minden elrendezés-menedzsernek implementálnia kell a LayoutManager interfészt Container osztály idetartozó metódusai Component add(component comp) Component add(component comp, int index) void add(component comp, Object constraints) void add(component comp, Object constraints, int index) LayoutManager getlayout() void setlayout(layoutmanager mgr) void validate()

FlowLayout sorfolytonos elrendezés 7 Sorfolytonos elhelyezés balról jobbra Elemek mérete: előnyös méret (preferredsize) alapján, az ablak átméretezésekor nem változik Sorok igazítása(align): balra, jobbra, középre Komponensek közötti konstans távolság vízszintesen(hgap) és függőlegesen(vgap) JPanel és Applet alapértelmezett elrendezésmenedzsere

8 FlowLayout Példa

GridLayout rácsos elrendezés 9 Megadott sor és oszlopszámú rácson való elhelyezés Rács cellái: egyenlő méretű téglalapok, minden komponens egy téglalapot foglal el (nincs lyuk!) Elemek mérete: cellaméret, az ablak átméretezésekor változik Komponensek közötti konstans távolság vízszintesen(hgap) és függőlegesen(vgap)

10 GridLayout Példa

BorderLayout határ menti 11 elrendezés 4+1 égtájon való elhelyezés: North (Észak), South (Dél), West (Nyugat), East (Kelet), Center (Közép) Azonos égtájon levő elemek takarják egymást Elemek mérete az ablak átméretezésekor változik Komponensek közötti konstans távolság vízszintesen(hgap) és függőlegesen(vgap) Window és leszármazottainak (JFrame, JDialog), JFrame tartalompaneljének elrendezésmenedzsere

12 BorderLayout Példa

JPanel, az összefogó konténer 13 Konténer, mely összefogja a benne levő elemeket Láthatatlan, vagy látható (szín, keret) Alapértelmezésben dupla pufferelésű Saját elrendezés-menedzsere van, alapértelmezésben FlowLayout

JPanel - Példa 14 pnnev pnszulev szemelypanel (kitölti a keretet) pngomb

15 JPanel - Példa

16 JPanel - Példa

17 Események

Eseményvezérelt programozás 18 A GUI eseményvezérelt, azaz a programot a futás közben keletkezett események vezérlik Esemény: egy objektum, amely mindig egy forrásobjektumhoz kötődik Eseménydelegációs modell: segítségével az esemény eljut a megfelelő figyelő objektumokhoz, amelyek feldolgozzák az eseményt Vannak alacsony szintű illetve magas szintű események

Mintaprogram 19 Feladat: tegyünk a keretbe gombot. Ha lenyomják a gombot, akkor a számítógép sípoljon egyet. :PittyegoKeret az esemény figyelője (ActionListener) btpittyeg:jbutton az esemény forrása (ActionEvent)

20 Mintaprogram

21 Mintaprogram

Eseményosztályok 22 Esemény: az alkalmazás által létrehozott objektum, mely a vele összefüggő információkat tartalmazza Esemény útja operációs rendszer eseménysora Alkalmazás forrásobjektum esemény figyelői A komponensen a felhasználó csak akkor válthat ki eseményt, ha a komponens eleme az alkalmazás komponenshierarchiájának látható

Eseményosztályok 23 Minden eseményosztály közös őse a java.util.eventobject A Swing az AWT eseménymodellt használja Az AWT események a java.awt.event csomagban találhatók, míg a Swing események a javax.swing.event csomagban Az AWT események közös őse a java.awt.awtevent absztrakt osztály

24 Eseményosztályok - Osztályhierarchia

Eseményosztályok 25 EventObject osztály protected Object source Object getsource() AWTEvent osztály Mezők: protected int id (Pl.: MOUSE_CLICKED) protected boolean consumed static final int RESERVED_ID_MAX static final long FOCUS_EVENT_MASK static final long KEY_EVENT_MASK

Eseményosztályok 26 AWTEvent osztály Metódusok: int getid() protected void consume() protected boolean isconsumed()

Alacsony szintű események 27 Operációs rendszer szintjén történő elemi esemény Forrása csak komponens lehet ComponentEvent utódja Alacsony szintű AWT események: Alacsony szintű AWT események: ComponentEvent: Komponensesemény ContainerEvent: Konténeresemény FocusEvent: Fókuszesemény WindowEvent: Ablakesemény KeyEvent: Billentyűzetesemény MouseEvent: Egéresemény

Magas szintű események 28 Minden esemény, ami nem alacsony szintű Általában logikai esemény Forrása nem feltétlenül komponens Magas szintű események: ActionEvent: Akcióesemény AdjustmentEvent: Igazítási esemény ListSelectionEvent: Listakiválasztás-esemény DocumentEvent: Dokumentumesemény

Eseménydelegációs modell 29 Modell elemei: Eseményobjektum Eseményforrás (forrásobjektum) és figyelőláncai Eseményfigyelő Az eseményt figyelő és lekezelő objektum Fel kell fűzni a forrásobjektum megfelelő figyelőláncára Osztályának implementálnia kell a figyelő interfészt Esemény feldolgozása Forrásobjektum Figyelő objektumok

30 A JButton akció- és billentyűzetfigyelő lánca

31 Alacsony szintű események

32 Alacsony szintű események

33 Magas szintű események

A felhasználói felület tervezése 34 Felhasználói felület képének megtervezése: keret és komponensei Eseményforrások meghatározása: azonosító/osztály + zárójelben esemény osztálya Eseményfigyelők meghatározása: azonosító/osztály + zárójelben: figyelő interfész, figyelt objektum(ok) azonosítója (azonosítói) Szükség esetén tulajdonosi hierarchia megtervezése

Példa - Nyomásszámláló 35 Feladat: tegyünk két nyomógombot a keretbe, indulásképpen mindkettőnek "0" legyen a felirata! Ha lenyomnak egy gombot, akkor növeljük meg eggyel a rajta levő szám értékét! btbal (ActionEvent) :NyomasSzamlalo (ActionListener, btbal,btjobb) btjobb (ActionEvent)

36 Példa - Nyomásszámláló

Példa - Nyomásszámláló 37 Feladat: Készítsünk egy keretet! Ha a keretet be akarják csukni, akkor csukódjon be úgy, hogy a program rövid hangot hallat és befejezi futását :AblakBecsuk (WindowEvent) (WindowListener)

38 Példa - Nyomásszámláló

Eseményadapterek 39 Eseményadapter: Absztrakt osztály A figyelő interfészt üres metódusokkal implementálja Figyelő interfész Adapter osztály Metódusok száma ComponentListener ComponentAdapter 4 ContainerListener ContainerAdapter 2 FocusListener FocusAdapter 2 KeyListener KeyAdapter 3 MouseListener MouseAdapter 5 MouseMotionListener MouseMotionAdapter 2 W indowlistener W indowadapter 7

Eseményadapterek 40 Jó lenne, ha az eseménykezelő metódusok osztálya örökölhetné az eseményadaptert Gond: Javában nincs kettős öröklés, egy osztály nem lehet adapter és komponens egyszerre Megoldás: eseményadapter osztály alkalmazása mint belső osztály

Eseményadapterek - Példa 41 Ablak becsukása adapter osztállyal:

Eseményadapterek - Példa 42 Ablak becsukása adapter osztállyal:

Könyvészet 43 Angster Erzsébet, Objektumorientált tervezés és programozás. Java I-II. (Bazele programării orientate pe obiecte), Ed. 4 Kör Bt., Budapesta, 2002. Kathy Sierra, Bert Bates: Agyhullám: Java, Kiskapú, 2011.