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

HTML enhanced for web apps! Fodor Krisztián
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
Tervezési minták és a PHP 5
Programozás III STRING-XML.
Programozás III OOP ALAPOK.
Az MVC tervezési minta 2. előadás.
FRAME-k (keretek). FRAME-k A frame-ek (keretek) segítségével a képernyőt felosztva egyszerre jeleníthetünk meg több webes dokumentumot a képernyőn. Fejlec.html.
Programozás III KOLLEKCIÓK 2..
Programozás III FACTORY, KOMPOZÍCIÓ és EGYEBEK.
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 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.
Vizuális modellezés Uml és osztálydiagram UML eszközök
Követelmények Bevezetés a Javába Első java program írása Dokumentációk
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Fejlett Programozási Technológiák II. Világos Zsolt 12. gyakorlat.
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.
Programozási technológia 1
© 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.
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:
Önálló labor munka Csillag Kristóf 2005/2006. őszi félév Téma: „Argument Mapping (és hasonló) technológiákon alapuló döntéstámogató rendszerek vizsgálata”
Hernyák Zoltán Programozási Nyelvek II.
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ú,
Delphi Készítette: Rummel Szabolcs Elérhetőség:
APEX BMF, II. félév.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
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
Komoróczy Tamás 1 Java programozási nyelv A nyelv alapjai.
Programozás III KOLLEKCIÓK.
Objektumvezérelt rendszerek tervezése
Objektumvezérelt rendszerek tervezése 9.óra – Builder, Observer © Nagy Csaba.
Programozás III KOLLEKCIÓK.
HTML ÉS PHP (Nagyon) rövid áttekintés. ADATBÁZISRENDSZEREK MŰKÖDÉSI SÉMÁJA Felh. interakció DB Connector MySQL ? A gyakorlaton:
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
Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs
Webes MES keretrendszer fejlesztése Kiss Miklós Dániel G-5S8 Tervezésvezető: Dr. Hornyák Olivér.
Gyurkó György. Az OO programozás és tervezés története 1960-as évek: SIMULA (véletlen folyamatokat szimuláló programok írása) az OO nyelvek őse 1970-es.
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.
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.
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
ListBox CheckedListBox TextBox
Neumann János Informatikai Kar
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 beágyazott osztály

PÉLDA BEÁGYAZOTT OSZTÁLYRA Ezért nem lehet közvetlenül elérni az indit() metódust.

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.

LISTAKEZELÉS 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);

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).

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);

LISTAKEZELÉS 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)

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.

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.

A SWING SZERKEZETE Pl.:

Swing osztályok, példák: ponents/index.html A SWING SZERKEZETE html + google MVC:

Minden minta olyan problémát ír le, ami újra és újra felbukkan a környezetünkben, s aztán leírja hozzá a megoldás magját oly módon, hogy a megoldás milliószor felhasználható legyen anélkül, hogy valaha is kétszer ugyanúgy csinálnánk. Christopher Alexander MÁR MEGINT TERVEZÉSI MINTÁK (ISM.) Eddig említett minták:factory, singleton, MVC

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.