B M Java Programozás 8. Gy: Java alapok IT A N Adatkezelő 4.rész

Slides:



Advertisements
Hasonló előadás
Melyiket válasszam? Windows VS. Linux Készítette: Uher Bertalan.
Advertisements

Bevezetés a C# nyelvbe Az alapok összefoglalása Farkas Csaba.
Körlevél. Körlevél alapok: Körlevél: sok címzettnek közel azonos tartalmú üzenet! (Pl: Felvételi értesítő) 3 részből áll: 1. Adatok /címlista 2. Levétörzs/szövegtörzs.
ETailer Kit Lenovo VIBE P Lenovo Internal. All rights reserved. Ildikó Árva
Nyitó szakértői találkozó. "C" komponens-informatika Készítette: Farkas László január.28.
Fájlkezelés.
Munkalapok védelme az Excelben
Operációs rendszerek.
A kérdőívek, a kérdőívszerkesztés szabályai
Adatbázis normalizálás
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Becslés gyakorlat november 3.
Fodor Edina, 1. óra feladatai Fodor Edina,
A program főmenüjében a Könyvelés -> Számlázás -> Számlakészítés menüpontot kell választani
Montázs készítése.
TESZTSOR.HU REGISZTRÁCIÓ, VÁSÁRLÁS ÉS TESZTKITÖLTÉS ELKEZDÉSE
Scilab programozás alapjai
Adatok importálása, rendezése és szűrése
Alkalmazásfejlesztés gyakorlat
Egy üzemben sok gyártósoron gyártanak egy bizonyos elektronikai alkatrészt. Az alkatrészek ellenállását időnként ellenőrzik úgy, hogy egy munkás odamegy.
Programozás III. Gyakorlás.
PHP - függvények.
A KINOVEA mozgáselemző rendszer használata
Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök
CSOPORT - A minőségellenőrök egy megfelelő csoportja
Triggerek Kalmár György.
Microsoft songsmith Zenekészító program.
C# SZINTAKTIKÁJA Az egyes utasítások végén pontosvessző áll
Táblázatkezelés gyakorlatok
Vállalati brosúra A cég általános célkitűzése
Animációk.
Adatbázis-kezelés (PL/SQL)
Közigazgatási alapvizsga a Probono rendszerben
középfokú felvételi eljárás
ROTA STAND Felállást és átülést segítő eszköz.
Alapvető tudnivalók Írásjelek mindig előtte lévő szóhoz tapadjanak
Számítógépes Hálózatok
Teljes visszalépéses elemzés
Az Endnote bibliográfia adatbázis-kezelő szoftver alapvető használata november Skultéti Attila
3. A robot képernyőmenüje
Tilk Bence Konzulens: Dr. Horváth Gábor
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Szoftverrobotok vs biorobotok Bemutatkozik Albert, a vállalati robot
Informatikai gyakorlatok 11. évfolyam
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
Java Programozás 3. Gy: Java GUI Swing, AWT B IT M A N v:
Online jegyzőkönyv kitöltési segédlet
A KRÉTA rendszer céljai, fejlesztési irányai
Új pályainformációs eszközök - filmek
Northwind Traders Kik vagyunk?
A Microsoft SharePoint testreszabása Online webhely
A távoli asztal, valamint az Endnote használata a távoli asztalon
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
B M Java Programozás 7. Gy: Java alapok IT A N Adatkezelő 3.rész
Szálszinkronizáció.
A szállítási probléma.
B M Java Programozás 6. Gy: Java alapok IT A N Adatkezelő 2.rész
B M Java Programozás 5. Gy: Java alapok IT A N Adatkezelő 1.rész
B M Java Programozás 2. Gy: Java alapok IT A N Adatszerkezetek
Vállalati brosúra A cég általános célkitűzése
A Szociális Ágazati Regiszter használatával kapcsolatos tudnivalók
SQL jogosultság-kezelés
Tájékoztató az EPER pályázati folyamatáról
TIENS FOKHAGYMAOLAJ KAPSZULA.
Áramlástan mérés beszámoló előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatika Oktató: Katona Péter.
Access alapok Táblák, kapcsolatok, űrlapok.
Hagyományos megjelenítés
Hipotéziselmélet Adatelemzés.
Előadás másolata:

B M Java Programozás 8. Gy: Java alapok IT A N Adatkezelő 4.rész

A feladat Feladat: folytassuk a panel életre keltését! Készítsük el a Módosítás funkciót A Lista panelt másoljuk le, és bővítsük a szükséges mezőkkel A Módosít gomb megnyo-másakor az adott mezők-be írt adatok módosulja-nak a kijelölt rekordban

Az EmpList panel lemásolása Álljunk rá a projektünkben az EmpList osztály nevére, és másoljuk le az osztályt. A megjelenő panelen adjuk meg az új osztály nevét: EmpMod Ctrl C + Ctrl V +

Az EmpMod ideiglenes átalakítása Az EmpMod panel nem futtatható, így nagyon nehéz a grafikus felületen módosításokat végezni, ezért ideiglenesen alakítsuk át futtathatóra: Az EmpProgramból másoljuk át a main függvényt, és alakítsuk át, hogy ezt a panelt indítsa! A paraméterként bejövő táblamodellt szüntessük meg, és helyette példányosítsuk a panelen az etm táblamodellt (a kódot az EmpProgramból másoljuk át!) Ha kész a grafikus átalakítás, ezeket a módosításokat vissza kell majd állítani!

Az EmpMod ideiglenes átalakítása private EmpTM etm; public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { EmpMod frame = new EmpMod(null); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } }); public EmpMod(JFrame f) { //== ,EmpTm betm super(f, "Dolgozók listája", true); //== etm = betm; Object emptmn[] = {"Jel","Kód","Név","Szülidő","Lakóhely","IQ"}; etm = new EmpTM(emptmn, 0); setBounds(100, 100, 500, 300); Ideiglenes main függvény, benne az átalakított EmpMod példányosítás Kommentben az eredeti adatok, így könnyebb lesz visszaállítani őket! Ideiglenes etm példány, az EmpProgramból!

Próba - Feladat Készítsük el a megjelölt módosításokat!

Az EmpMod panel grafikus átalakítása Ha nem jelenne meg a Design fül, akkor zárjuk be a panel kódját, és nyissuk meg a következő módon: Jobb klikk az osztály nevére, a Package Explorerben Open With WindowBuilder Editor 2 3 1

Az EmpMod panel grafikus átalakítása Vegyük kisebbre (alacsonyabbra) a táblázatot Vegyük észre: a kód nem változtatható! Rakjunk fel egy szövegmezőt (JTextField) Másoljuk le a szövegmezőt, közben állítsuk be a megfelelő szélességeket! (Ciklusban: módosítok, megnézem) Állítsuk be a szövegmezők neveit: nev, szid, lakh, iq Másolással készítsük el a Módosít gombot, Var: modosit 1. változat Kész a panel

Magyarázatok Programlogika: Az adatokat csak a megkapott táblamodellben módosítjuk, a végleges (perzisztens) tároláshoz később ki kell írni őket fájlba! Csak egy adatsor, de annak akár az összes adata módosítható egyszerre, ebből következnek a Módosítás gomb megnyomásakor lezajló ellenőrzések. Hiba keletkezik, ha: Ha nincs kitöltve egyetlen módosítandó adat sem, Ha a Születési időben hibás dátum van, Ha hibás szám van az IQ mezőben, Ha nincs kijelölve módosítandó rekord Ha több rekord van kijelölve módosításra A szükséges metódusok megegyeznek az Új dolgozó panelen megírtakkal. Mi lenne, ha elegánsan kitennénk ezeket egy osztályba (BC), és azt példányosítva használnánk (mint ahogy kell)?!

A BC (BasicClass) osztály kódja Hozzunk létre a projekthez egy sima osztály: File \ New \ Class Legyen az osztály neve: BC A NewEmp osztályból másoljuk át a kódot, a szükséges importokat és a szükséges változókat. Legyen minden változó és metódus statikus! import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.JOptionPane; import javax.swing.JTextField; public class BC { private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); private static String mes = "Emp program üzenet"; 3/1

A BC (BasicClass) osztály kódja public static String RF(JTextField a) { return a.getText().toString(); } public static boolean filled(JTextField a) { String s = RF(a); if (s.length() > 0) return true; else return false; public static boolean goodDate(JTextField a) { Date testDate = null; try {testDate = sdf.parse(s); } catch (ParseException e){return false;} if (sdf.format(testDate).equals(s)) return true; else return false; public static boolean goodInt(JTextField a) { try {Integer.parseInt(s); return true; } catch (NumberFormatException e){return false;} 3/2

A BC (BasicClass) osztály kódja public static void showMD(String s, int i){ JOptionPane.showMessageDialog(null, s, mes, i); } public static Date StoD(String s){ Date testDate = null, vid = null; try {testDate = sdf.parse(s); } catch (ParseException e){return vid;} if (!sdf.format(testDate).equals(s)){return vid;} return testDate; public static int StoI(String s){ int x=-55; x = Integer.parseInt(s); return x; public static void DF(JTextField a) { a.setText(""); } //== osztály vége 3/3 + Adott szövegmezőt kiürítő metódus

Az EmpMod panel Módosítás gombjának kódja A grafikus dizájnerben kattintsunk duplán a Módosít gombra, így hozzáadunk egy eseménykezelőt, és visszajutunk a kódba. Kezdjük a kód kiegészítését. Készítsük el a Módosít gomb kódját: JButton modosit = new JButton("M\u00F3dos\u00EDt"); modosit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (!BC.filled(nev) && !BC.filled(szid) && !BC.filled(lakh) && !BC.filled(iq)) BC.showMD("Egyetlen módosító adat sincs beírva!",0); else if (BC.filled(szid) && !BC.goodDate(szid)) BC.showMD( "A Születési idő mezőben hibás adat van!",0); else if (BC.filled(iq) && !BC.goodInt(iq)) BC.showMD( "Az IQ mezőben hibás adat van!",0); else { 2/1

Az EmpMod panel Módosítás gombjának kódja int db=0, jel=0, x=0; for(x = 0; x < etm.getRowCount(); x++) if ((Boolean)etm.getValueAt(x,0)) {db++; jel=x;} if (db==0) BC.showMD("Nincs kijelölve a módosítandó rekord!",0); if (db>1) BC.showMD("Több rekord van kijelölve!\nEgyszerre csak egy rekord módosítható!",0); if (db==1) { if (BC.filled(nev)) etm.setValueAt(BC.RF(nev), jel, 2); if (BC.filled(szid)) etm.setValueAt(BC.RF(szid), jel, 3); if (BC.filled(lakh)) etm.setValueAt(BC.RF(lakh), jel, 4); if (BC.filled(iq)) etm.setValueAt(BC.RF(iq), jel, 5); BC.showMD("A rekord módosítva!",1); BC.DF(nev); BC.DF(szid); BC.DF(lakh); BC.DF(iq); etm.setValueAt(new Boolean(false), jel, 0); } }); 2/2

Az EmpMod panel visszaalakítása Töröljük ki a main függvényt! Állítsuk vissza az ideiglenesen módosított sorokat! A main függvény hűlt helye public EmpMod(JFrame f, EmpTM betm) { super(f, "Dolgozók listája", true); etm = betm; setBounds(100, 100, 500, 300); A helyreállított konstruktor Az ideiglenes emp példány hűlt helye

Az EmpMod meghívása az EmpProgramból A Módosítás gomb kódja: JButton modosit = new JButton("M\u00F3dos\u00EDt\u00E1s"); modosit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (etm.getRowCount()==0) BC.showMD("Nincs módosítható adat!", 0); else { EmpMod em = new EmpMod(EmpProgram.this, etm); em.setVisible(true); } });

A Módosítás funkció kipróbálása 3 1 2 9 4 7 5 8 6

Lista panel kialakítás – a panel létrehozása

A feladat Feladat: folytassuk a panel életre keltését! Készítsük el a Törlés funkciót Egyszerre csak egy rekord törölhető, extra funkcióként ez átállítható A Lista panelt másoljuk le, és azt alakítsuk át a szükséges módon

Az EmpList panel lemásolása Álljunk rá a projektünkben az EmpList osztály nevére, és másoljuk le az osztályt. A megjelenő panelen adjuk meg az új osztály nevét: EmpDel Ctrl C + Ctrl V +

Az EmpDel panel kialakítása Nyissuk meg a panelt a WindowBuilder Editor-ral!

Az EmpDel panel kialakítása (Design) Írjuk át a panel nevét, title: Dolgozók törlése Vegyük alacsonyabbra a táblázatot Rakjunk egy JCheckBox-ot a panelre Variable: jcb text: Több rekord is törölhető egyszerre Adjunk a jcb-hez akciókezelőt: \ Add event handler \ action \ actionPerformed Váltsunk vissza Design nézetre, másoljuk le a Bezár gombot, írjuk át a feliratát, rakjuk a megfelelő helyre! Var: torol, text: Töröl Kattintsunk a Töröl gombra duplán (akciókezelő hozzáadása) Kész a panel, jöhet a kód módosítása

Magyarázatok Programlogika: Szükségünk lesz egy változóra, ami a többes törlés funkció állapotát mutatja (md) A kilépés kezelésével nem kell foglalkoznunk, mert ezen a panelen fogjuk kitörölni a táblázatból az adatokat, és mivel a panel konstruktorában szerepel az etm = betm; utasítás (a főprogramból paraméterként érkező betm, és a panelen használt etm megegyezik, vagyis a két táblamodell ugyanarra a változóra mutat), a főprogramban automatikusan módosulnak az adatok!

Az EmpDel panel kialakítása – kód: A többes törlés változójának deklarálása: private boolean md=false; A többes törlés JCheckBox (jcb) kódja: jcb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { md = jcb.isSelected(); } });

Az EmpDel panel kialakítása – kód: A Törlés (torol) gomb kódja: int db=0, jel=0, x=0; for(x = 0; x < etm.getRowCount(); x++) if ((Boolean)etm.getValueAt(x,0)) {db++; jel=x;} if (db==0) BC.showMD("Nincs kijelölve a törlendő rekord!",0); if (!md) { if (db>1) BC.showMD("Több rekord van kijelölve!\nEgyszerre csak egy rekord törölhető!",0); if (db==1) { etm.removeRow(jel); BC.showMD("A rekord törölve!",1); } } else { for (int i=0; i<etm.getRowCount(); i++) if ((Boolean)etm.getValueAt(i,0)) {etm.removeRow(i); i--;} BC.showMD("Rekord(ok) törölve!",1);

Az EmpDel panel beépítése az EmpProgramba Az EmpProgram-ban lévő Törlés (torol) gomb kódja: if (etm.getRowCount()==0) BC.showMD("Nincs törölhető adat!", 0); else { EmpDel ed = new EmpDel(EmpProgram.this, etm); ed.setVisible(true); fdb.setText(""+etm.getRowCount()); } Kész! Próbálja ki mindenki az alkotást!

Lista panel kialakítás – a panel létrehozása

A feladat Feladat: folytassuk a panel életre keltését! Készítsük el a Keresés funkciót Kezdjük a grafikus felület kialakításával

A Keresés panel kialakítása – EmpProgram EmpProgram, Design felület! Containers \ JPanel Bal felső sarok helyén kattintani, nyomva tartani az egeret, elhúzni a jobb alsó sarokba, elengedni az egeret!

A Keresés panel kialakítása – EmpProgram Szegély a panel köré: Properties \ border . . . A többi tulajdonság maradjon!

A Keresés panel kialakítása – EmpProgram Kapcsoljuk ki a panel elrendezés menedzserét! 1 3 2

A Keresés panel kialakítása – EmpProgram Rakjuk a panelre a Keresés feliratot Rakjuk fel a Kód JRadioButton-t, Var: jrbkod, text: Kód Legyen kiválasztva ez az nyomógomb

A Keresés panel kialakítása – EmpProgram Másolással készítsük el a többi rádiógombot: Másolással készítsük el az X= feliratot Rakjunk fel egy szövegmezőt, Var: kulcs Rakjuk fel a Keresés gombot, Var: keres Név Lakóhely IQ Variable jrbnev jrblak jrbiq Text

A Keresés panel kialakítása – EmpProgram Kódban alakítsuk ki a nyomógomb csoportot! Az egyes nyomógombok definíciója alá írjuk be a kódot: ButtonGroup bg = new ButtonGroup(); bg.add(jrbkod); bg.add(jrbnev); bg.add(jrblak); bg.add(jrbiq); Deklaráljunk egy változót, amiben mindig a kiválasztott keresőkulcs értéke lesz. Alapértéke a kod, hiszen ez ki van választva induláskor! private String kerkif="kod";

A Keresés panel kialakítása – EmpProgram Adjunk hozzá Design felületen akciókezelőt a jrbkod nyomógombhoz: jobb klikk \ Add event handler \ action \ actionPerformed Adjuk hozzá az esemény kódját (állítsuk be a kerkif változó értékét) if (jrbkod.isSelected()) kerkif="kod"; Ismételjük meg a fenti műveletsort a többi nyomógombra! if (jrbnev.isSelected()) kerkif="nev"; if (jrblak.isSelected()) kerkif="lak"; if (jrbiq.isSelected()) kerkif="iq";

Házi feladat Aki akarja (mindenki), az írja át úgy az Új dolgozó panel, és az EmpProgram osztály kódját, hogy az is a BC osztály metódusait használja!

V É G E VÉGE