Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

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

Hasonló előadás


Az előadások a következő témára: "B M Java Programozás 8. Gy: Java alapok IT A N Adatkezelő 4.rész"— Előadás másolata:

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

2 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

3 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 +

4 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!

5 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!

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

7 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

8 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

9 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)?!

10 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

11 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

12 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

13 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

14 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

15 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

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

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

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

19 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

20 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 +

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

22 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

23 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!

24 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(); } });

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

26 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!

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

28 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

29 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!

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

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

32 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

33 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

34 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";

35 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";

36 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!

37 V É G E VÉGE


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

Hasonló előadás


Google Hirdetések