Programozás III SWING. SWING ALKALMAZÁSOK (ISM.) Swing felületű, eseményvezérelt alkalmazás létrehozása: 1.JFrame alapú osztály létrehozása Szerepe: vezérlés.

Slides:



Advertisements
Hasonló előadás
7. előadás.  Zend_Auth komponens  Authentikációs típusok  Az authentikáció menete  Zend_Acl_Resource  Zend_Acl_Role  Jogosultságkezelés ZF-ben.
Advertisements

Készítette: Kun Béla.  Operációs rendszernek nevezzük a számítástechnikában a számítógépeknek azt az alapprogramját, mely közvetlenül kezeli a hardvert,
ADATBÁZISOK.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 8. rész – Grafikus felhasználói felület Nyugat-Magyarországi Egyetem Faipari Mérnöki.
II. Grafikus felhasználói interfész
Programozás III STRING-XML.
Programozás III OOP ALAPOK.
Hálózati architektúrák
Az MVC tervezési minta 2. előadás.
Programozás III KOLLEKCIÓK 2..
Programozás III GRAFIKUS FELÜLETEK.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Adatbányászati technikák (VISZM185)
© Kozsik Tamás Tömbök, kollekciók és egyéb alaposztályok.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Fájlkezelés, IO Kivételkezelés Belső osztályok
Vizuális modellezés Uml és osztálydiagram UML eszközök
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
Java programozási nyelv 5. rész – Osztályok III.
C# tagfüggvények.
C# tagfüggvények.
Annotációk a Java 5 nyelvben Kozsik Tamás. Annotációk Módosítószavak bővítése A programszöveg elemeihez rendelhetők –Csomagokhoz, típusokhoz, metódusokhoz,
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
Webszerkesztés Űrlapok a HTML-ben. Űrlap létrehozása Űrlapunk tartalma a … elemek között fog helyetfoglalni Egy lapon több űrlap is elhelyezhető Több.
WEB MES (webes gyártásirányító rendszer)
Ficsor Lajos CPP6 / 1 Virtuális bázisosztály Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Objektumorientált tervezés és programozás II. 3. előadás
Hálózati Bombermen Belicza András Konzulens: Rajacsics Tamás BME-AAIT.
Hálózati Bombermen Belicza András Konzulens: Rajacsics Tamás BME-AAIT.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
1 Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Javascript Microsoft által készített kiegészítése Statikus típusosság Nagy projektek Windows 8 fejlesztésénél WinRT egy részét ebben írták Nyílt forráskódú,
Objektumorientált programozás
APEX BMF, II. félév.
3. előadás.  Apache szerver tudnivalók  Az index.php .htaccess – web-szerverünk beállításai  Konfigurációs állományok  Adatbázis kapcsolódás beállítása.
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
Programozás III KOLLEKCIÓK.
Programozás III SWING. SWING ALKALMAZÁSOK (ISM.) Swing felületű, eseményvezérelt alkalmazás létrehozása: 1.JFrame alapú osztály létrehozása Szerepe: vezérlés.
Programozás III KOLLEKCIÓK.
Webes alkalmazásfejlesztés
Programozás III CSOMAG. CSOMAGOK Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek. A Java is csomagok halmaza: csomagokban van.
A Visual Basic és a programozás oktatása
Webes MES keretrendszer fejlesztése Kiss Miklós Dániel G-5S8 Tervezésvezető: Dr. Hornyák Olivér.
Grafikus programozás Készítette: Csernok László
A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. Számítógép- hálózatok dr. Herdon Miklós dr. Kovács György Magó Zsolt.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 6. gyakorlat.
Programozás III ÖTLETEK A FELADATMEGOLDÁSHOZ. A HF-EK APROPÓJÁN Néhány javaslat: 1. Jó lenne, ha a feladatmegoldás előtt átnéznék az előadás-anyagokat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Egyszerű játékprogram szimultán fejlesztése – az Android és Windows Phone platform hasonlóságai és különbségei Kaczur Sándor, Friedel Attila
Strukturális tervezési minták
Ajánlat, szerződés, számla dokumentumok egységes kezelése
Alkalmazásfejlesztés gyakorlat
Neumann János Informatikai Kar
ListBox CheckedListBox TextBox
Operációs rendszerek.
Neumann János Informatikai Kar
Hernyák Zoltán Programozási Nyelvek II.
Hálózati architektúrák
Hernyák Zoltán Programozási Nyelvek II.
B M Java Programozás 5. Gy: Java alapok IT A N Adatkezelő 1.rész
Előadás másolata:

Programozás III SWING

SWING ALKALMAZÁSOK (ISM.) Swing felületű, eseményvezérelt alkalmazás létrehozása: 1.JFrame alapú osztály létrehozása Szerepe: vezérlés 2. A frame-re rákerül egy vagy több panel. Szerepük: erre kerülnek az egyéb komponensek 3. Az egyes komponensekhez eseményeket rendelünk. Szerepük: ezek hatására hajtódik végre a feladat.

SWING ALKALMAZÁSOK (ISM.) Swing felületű, eseményvezérelt alkalmazás inicializálása: 1.Komponensek definiálása, tulajdonságaik beállítása. 2. Elrendezés-menedzser beállítása. 4. Eseményfigyelők beállítása. 3. Komponensek felrakása.

A SWING SZERKEZETE

Néhány elrendezés: FlowLayout BoxLayout ELRENDEZÉS-MENEDZSER

Néhány elrendezés: BorderLayout GridLayout ELRENDEZÉS-MENEDZSER

Egyszerű feladatok esetén használhatjuk a Netbeans által felkínált free-design-t vagy a Null Layout-ot, de komolyabb (vagy igényesebb) feladatok esetén két elrendezés javasolt: 1. BorderLayout 2. GridBagLayout

GRIDBAGLAYOUT

Az esemény a vele összefüggő információkat magába foglaló objektum. Ezek az információk: az esemény forrása az esemény típusa az esemény időpontja…stb. ESEMÉNYEK – EVENTS Az események mindig valamilyen forrásobjektumon keletkeznek: nyomógombon, szövegmezőn,…stb. Csomag: java.awt.event

ESEMÉNYEK – EVENTS Az események mindig sorban, egymás után keletkeznek, nem keletkezhet egyszerre két esemény. Az alacsony szintű események (pl. billentyű-, egér-esemény) az operációs rendszer szintjén keletkeznek, melyeket egy eseménysorban (event queue) helyez el. Az eseményt először a forrásobjektum kapja meg, majd továbbítja azt az esemény figyelőinek. (Szóhasználat: „forrásobjektumon keletkezik”.) Egy komponensen csak akkor keletkezhet esemény, ha az eleme az alkalmazás komponens-hierarchiájának és látható.

Az eseményekre csak akkor reagálhatunk, ha figyeljük őket. Minden forrásobjektumhoz ki kell jelölni úgy nevezett figyelőobjektumokat (ezekben kezeljük a forrásobjektumon keletkezett eseményeket). Egy forrásobjektumhoz több figyelőobjektumot adhatunk hozzá az add***Listener() segítségével. Például: addActionListener() ESEMÉNYEK KEZELÉSE

Egy objektum csak akkor figyelhet egy eseményt, ha hozzáadtuk a forrásobjektumhoz, és osztálya implementálja a figyelőinterfészt. Adapterosztályokkal kiküszöbölhető, hogy implementálnunk kelljen az összes – figyelőinterfészbeli – metódust. Pl.: ESEMÉNYEK KEZELÉSE

Természetesen több metódus is implementálható, pl.:

ESEMÉNYEK KEZELÉSE A gombnyomás eseményfigyelőjének azonban csak egyetlen metódusa van: De mit jelent ez az egymásba ágyazott struktúra? FONTOS: A gombnyomás-esemény mindig az actionPerformed és sohasem az egérkattintás!

ESEMÉNYEK KEZELÉSE – PÉLDA belső osztály

ESEMÉNYEK KEZELÉSE – PÉLDA beágyazott osztály

PÉLDA BEÁGYAZOTT OSZTÁLYRA

KITÉRŐ: OSZTÁLYTÍPUSOK Az eddig használtak, azaz amelyek nincsenek beágyazva másik osztályba vagy interfészbe: top level class Csak public vagy módosító nélküli (csomag szinten public) lehet. Osztályokon belül deklarált osztályok: beágyazott osztályok (nested class). Fajtái: – statikus beágyazott osztály (static nested class), – belső osztály (inner class) – ezek közvetlenül elérik a tartalmazó osztály más tagjait is. Mind a négy hozzáférés lehet.

Egy JList Stringek sorozatát jeleníti meg, de hogyan kerülhetnek a listába objektumok? Lista-modelleket használunk: valamilyenModel modell = new valamilyenModel(); jlstValami.setModel(modell); SWING LISTAKEZELÉS

A használt modellek a ListModel interface implementált osztályai. 1.AbstractListModel: Segítségével tetszőleges objektumok kezelésére vonatkozó saját modellt generálhatunk. 2.DefaultListModel: Az AbstractListModel egy kiterjesztése Object típusú objektumok kezelésére (azaz nem generikus). SWING LISTAKEZELÉS

A modellek szintén konténerek, vagyis a listákhoz hasonló módon kezelhetőek. (sok saját metódus) Ha új elem kerül beléjük, akkor arról értesíteni kell a megfelelő JList-et (különben nem jeleníti meg az új elemet, pontosabban az új elem toString()-jét): DefaultListModel esetén ez az értesítés automatikus; AbstractListModel használatakor a SajatListModel osztályban létre kell hoznunk egy saját metódust az új elem hozzáadásához, majd a hozzáadás után: this.fireIntervalAdded(objektum, kezdoIndex, vegIndex); SWING LISTAKEZELÉS

A SWING SZERKEZETE A Java-ban mindegyik modell interfészhez (ButtonModel, ListModel, stb.) készítettek egy alapértelmezett modellt (DefaultButtonModel, DefaultListModel, stb.), melyet a megfelelő komponens alapértelmezésben használ, de ez a modell kicserélhető. A modellek eseményt dobhatnak, ennek megfelelően vannak figyelőláncaik. A felhasználó a komponenssel van közvetlen kapcsolatban.

SWING MODELLEK Pl.:

Látható, hogy a listakezelés három komponensre bontható: 1. Manipulálhatjuk a listához tartozó adatokat. 2. Megjelenítjük a képernyőn. 3. Eseményeket rendelhetünk hozzá. modell (model) nézet (view) vezérlő (controller) SWING LISTAKEZELÉS

A SWING SZERKEZETE A Swing komponenseket az MVC (Model-View-Controller) architektúra (tervezési minta) alapján készítették. Model (modell): A komponens adatai, állapota. A modell felelős a komponens adatainak tárolásáért. Egy modellen több nézet is osztozhat. (pl. ListModel) View (nézet): A komponens megjelenése a képernyőn. A felhasználói eseményeket továbbítja a vezérlő rétegnek. (pl. JList) Controller (vezérlő): A felhasználói eseményeket feldolgozó programlogika. Felelős a külvilág eseményeire való reagálás módjáért. Reagálásként megváltoztathatja az adatmodell adatait.

A SWING SZERKEZETE

A Swing-ben az MVC egyszerűsített változatát alkalmazzák, azaz a vezérlés és a megjelenítés össze van vonva. A grafikus komponens saját maga felelős a megjelenítésért és a felhasználói események feldolgozásáért. Egy Swing komponens a modell és a grafikus megjelenítés közti kommunikációt vezérli.

MVC

Miért fontos a szétválasztás? Egy gyöngyszem.

TÁBLÁZATKEZELÉS AZ EDDIGIEK FÉNYÉBEN „Tisztességes” megoldás: táblamodell használatával.

TÁBLÁZATKEZELÉS AZ EDDIGIEK FÉNYÉBEN Lehetséges megoldások: 1.DefaultTableModel használata 2.Saját TableModel. 1.a – az oszlopfejet a modellben adjuk meg 1.b – a táblázatban

MVC  MVP Az üzleti és a megjelenési réteg teljes szétválasztása.

NÉHÁNY LINK onents/index.html