Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaKarola Siposné Megváltozta több, mint 6 éve
1
B M Java Programozás 7. Gy: Java alapok IT A N Adatkezelő 3.rész
2
A kód Feladat: folytassuk a panel életre keltését!
Alakítsuk ki az Új dolgozó felvitele panelt A panel a Beszúr gomb megnyomásakor ellenőrizze az adatokat Az adatok a Beszúr hatására adódjanak hozzá a táblázathoz, melyben tároljuk azokat.
3
Új dolgozó panel New \ Swing \ JDialog Célszerű kivenni a pipát!
Utólag törölhető a panel, ha mégis marad a pipa!
4
Új dolgozó panel Nyomógomb panel törlése Absolute layout beállítása
Háttérszín beállítása: Named colors\Lightness\paleturquoise 1 felirat (Kód:) és 1 szövegmező felpakolása A JTextField változónevének megadása: kod Felirat + szövegmező kijelölése , másolása, beillesztése Felirat átírása, a szövegmező változónevének beállítása (nev) 5+6 ismétlése (változók: szid, lak, iq) Nyomógombok felpakolása (másolással) Kód mező ne legyen szerkeszthető: Ablak felirata: Futassuk a kódot, nézzük meg az eredményt! Ctrl C + Ctrl Ctrl V +
5
Új dolgozó panel Programlogika: Legyen ez az ablak is modális.
A Lekér gomb jelenítse meg a rekord kódját. A legnagyobb létező kódot (maxKod) az EmpProgramtól kapja meg, ettől legyen eggyel nagyobb a rekord kódja. A Beszúr gomb megnyomásakor a program ellenőrizze le: ki vannak-e töltve a mezők, (filled), a születési idő dátum-e, (goodDate) az iq mezőben egész szám van-e (goodInt)! Ha megfelelőek az adatok a mezőkben, a Beszúr gomb megnyomásakor állítson elő a panel egy Emp típusú változót, ez egy metódussal (getEmp) lekérhető legyen a paneltől, és a panel lekérdezhető visszatérő (getKilep) értéke legyen 1, míg sima bezáráskor a visszatérő érték legyen 0.
6
Új dolgozó panel Kódok beszúrása: A konstruktorba:
public EmpNew(JFrame f, int maxKod) { super(f, true); setTitle("\u00DAj dolgoz\u00F3 felvitele"); Lehet, hogy kell: import javax.swing.JFrame; Lekér gombhoz: btnLekr.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { kod.setText(""+(maxKod+1)); } });
7
Új dolgozó panel Kódok beszúrása: Új metódusok:
public String RF(JTextField a) { return a.getText().toString(); } public boolean filled(JTextField a) { String s = RF(a); if (s.length() > 0) return true; else return false; public 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; String beolvasása szövegmezőből sdf: yyyy.MM.dd alakú dátumforma
8
Új dolgozó panel Kódok beszúrása: Új metódusok:
public boolean goodInt(JTextField a) { String s = RF(a); try { Integer.parseInt(s); return true; } catch (NumberFormatException e){return false;} } Szükséges importok: import java.util.Date; import java.text.SimpleDateFormat; import java.text.ParseException; Szükséges változó: private SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
9
Új dolgozó panel Kódok beszúrása: Új metódus: kódrövidítés miatt!
public void showMD(String s, int i){ JOptionPane.showMessageDialog(null, s, mes, i); } Szükséges import: import javax.swing.JOptionPane; Szükséges változó: private String mes = "Emp program üzenet";
10
Új dolgozó panel A Beszúr gomb kódja:
btnBeszr.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (!filled(kod)) kod.setText(""+(maxKod+1)); if (!filled(nev)) showMD("A Név mező üres!", 0); else if (!filled(szid)) showMD("A Születési idő mező üres!", 0); else if (!goodDate(szid)) showMD("A Születési idő mezőben hibás adat van!", 0); else if (!filled(lak)) showMD("A Lakóhely mező üres!", 0); else if (!filled(iq)) showMD("Az IQ mező üres!", 0); else if (!goodInt(iq)) showMD("Az IQ mezőben hibás adat van!", 0); } });
11
Új dolgozó panel Kipróbálás: a main függvényben ideiglenesen javítsuk ki a példányosítás kódját EmpNew dialog = new EmpNew(null, 52);
12
Új dolgozó panel Ha minden adat rendben, állítsunk elő egy Emp típusú változót az adatokból. Ehhez készítenünk kell egy Emp típust, és két újabb metódus is szükséges: public 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 int StoI(String s){ int x=-55; x = Integer.parseInt(s); return x; Stringből dátum Stringből integer
13
Az Emp típus elkészítése
A típus .dat fájlba írásához szükséges, hogy sorosítható legyen! File \ New \ Class 3 1 2x 4 2 5 6
14
Az Emp típus kódja import java.io.Serializable; import java.util.Date;
public class Emp implements Serializable { private int kod; private String nev; private Date szulido; private String lakohely; private int iq; public Emp(int kod, String nev, Date szulido, String lakohely, int iq){ this.kod = kod; this.nev = nev; this.szulido = szulido; this.lakohely = lakohely; this.iq = iq; } 2/1
15
Az Emp típus kódja public int getKod(){ return kod; }
public String getNev(){ return nev; public Date getSzulido(){ return szulido; public String getLakohely(){ return lakohely; public int getIq(){ return iq; 2/2
16
Új dolgozó panel A Beszúr gomb kódjának folytatása: private Emp adat;
private int kilep=0; btnBeszr.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { . . . else if (!filled(lak)) showMD("A Lakóhely mező üres!", 0); else if (!filled(iq)) showMD("Az IQ mező üres!", 0); else if (!goodInt(iq)) showMD("Az IQ mezőben hibás adat van!", 0); else { adat = new Emp(StoI(RF(kod)), RF(nev), StoD(RF(szid)), RF(lak), StoI(RF(iq))); showMD("Adat beszúrva!", 1); kilep=1; dispose(); setVisible(false); } });
17
Új dolgozó panel Már csak két metódus szükséges, amikkel ki tudjuk olvasni a panel adatait: public Emp getEmp(){ return adat; } public int KiLep() { return kilep; A panel Bezár gombjának kódja: btnBezr.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dispose(); setVisible(false); } });
18
Új dolgozó panel Töröljük ki a main függvényt a kódból:
19
Az Új dolgozó panel beépítése
Programlogika- az Új dolgozó panel beépítése: Az EmpProgram ablakban hozzunk létre egy Új adat nyomógombot A gombot megnyomva jelenjen meg a panel, ekkor adjuk át a panelnek a legutolsó rekord kódját. Ha nincs egyetlen adat sem, a kód induljon 21-ről! (mert csak!) Ha a bezárás ikonnal, vagy a Bezár gombbal bezárjuk a panelt, ne történjen semmi sem Ha a Beszúr gombot megnyomjuk a panelen, akkor olvassuk ki a panelről az új adatsort, és adjuk hozzá az adatokat nyilvántartó táblázathoz Növeljük az adatsorok számát!
20
Az EmpProgram panel módosítása
Ctrl C + Másoljuk le a Lista gombot, módosítsuk az adatait: Írjuk át a változó nevét: ujadat-ra Írjuk át a feliratát: Új adat-ra Kattintsunk rá duplán (akciókezelő hozzáadása), és adjuk meg a működését Ctrl V +
21
Az EmpProgram módosítása
A dátum kezeléséhez szükség lesz a Date osztályra, a formázásához a SimpleDateFormat osztályra: import java.util.Date; import java.text.SimpleDateFormat; A magyar dátumforma kezeléséhez szükség lesz egy dátumformátum változóra: private SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
22
Az EmpProgram módosítása
ujadat.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { int kodv=0; if (etm.getRowCount()==0) kodv=20; else kodv=(int)etm.getValueAt(etm.getRowCount()-1, 1); EmpNew en = new EmpNew(EmpProgram.this, kodv); en.setVisible(true); int kilep = en.KiLep(); if (kilep==1) { Emp newEmp = en.getEmp(); Date d = newEmp.getSzulido(); String ddd = sdf.format(d).toString(); etm.addRow(new Object[]{new Boolean(false), newEmp.getKod(), newEmp.getNev(), ddd, newEmp.getLakohely(), newEmp.getIq()}); fdb.setText(""+etm.getRowCount()); } }); tm.getValueAt(row, column) Adat kiolvasása az Új adat panelről Ha nincs adat, a kód értéke legyen 20, egyébként a táblázatban lévő utolsó adatsorban lévő kód értéke.
23
Az Új adat funkció kipróbálása
4 2 1 6 5 3 7
24
Lista panel kialakítás – a panel létrehozása
25
A kód Feladat: folytassuk a panel életre keltését!
Készítsük el az adatok kiírási funkcióját: Először a Célt kell kiválasztani, aztán megadni a kimeneti fájl nevét, végül megnyomni a Kiírás gombot. >>> Forrás: extra funkció, visszaírás oda, ahonnan betöltöttük az adatokat
26
Az EmpProgram panel módosítása
Másolással készítsük el a gombokat: Készítsük el a Cél: feliratot Másolással készítsük el a legördíthető listát, Var: jcbc Másolással készítsük el a szövegmezőt, Var: kifnev Adjunk hozzá eseménykezelőt a jcbc nevű legördíthető listához: Módosítás Törlés Kiírás Variable modosit torol kiir Text Jobb klikk a JComboBox-ra Add event handler \ action \ actionPerformed
27
Az EmpProgram kódjának módosítása
A célterület kezeléséhez szükség lesz egy változóra, ebben lesz mindig a kiválasztott cél értéke: private String cel="Válasszon!"; A lista (jcbc) kódja: String elem2[] = {"Válasszon!",">>> Forrás","Helyi .dat fájl", "Helyi .xml fájl","Helyi .csv fájl","Helyi .json fájl", "Helyi .pdf fájl","SQLite DB"}; JComboBox jcbc = new JComboBox(); for (String s: elem2) jcbc.addItem(s); jcbc.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { cel = (String)jcbc.getSelectedItem(); } });
28
Az EmpProgram kódjának módosítása
A Dizájn felületen kattintsunk duplán a Kiírás gombra A kódot egészítsük ki: JButton kiir = new JButton("Ki\u00EDr\u00E1s"); kiir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (cel.equals("Válasszon!")) SMD("Először válassza ki a Cél-t!"); else if (etm.getRowCount()==0) SMD("Nincs kiírható adat"); else if (cel.equals("Helyi .csv fájl")) { if (kifnev.getText().length()==0) SMD("Nincs megadva a cél fájl neve!"); else { FileManager.CsvWriter(kifnev.getText().toString(), etm); } }); public void SMD (String s){ JOptionPane.showMessageDialog(null, s, mes, 0); }
29
Adatok kiírása csv fájlba
Programlogika: A rutin megkapja a kiírandó fájl nevét, és az adatokat tartalmazó táblamodell nevét Kiírja a mezők nevét Két egymásba ágyazott ciklussal végigmegy az adatokon, és kiírja őket a fájlba j etm.getColumnCount() i etm.getRowCount()
30
Adatok kiírása csv fájlba
public static void CsvWriter(String fnev, EmpTM etm) { try { PrintStream out = new PrintStream(new FileOutputStream(fnev)); out.println("Kód;Név;Szülidő;Lakóhely;IQ"); int rdb = etm.getRowCount(); int cdb = etm.getColumnCount(); for (int i=0; i < rdb; i++) { for (int j=1; j < cdb-1; j++) { out.print(""+etm.getValueAt(i,j)+";"); } out.println(""+etm.getValueAt(i, cdb-1)); out.close(); JOptionPane.showMessageDialog(null, "Adatok kiírva!", mes, 1); } catch (IOException ioe) { JOptionPane.showMessageDialog(null, "CsvWriter: "+ ioe.getMessage(), mes, 0);
31
A Kiírás funkció kipróbálása
1 5 2 3 4 1
32
A kiírt adat visszaolvasása
3 C:\Users\bitman\workspace\EmpOrai\prb.csv 1 2 5 4 6
33
Lista panel kialakítás – a panel létrehozása
34
V É G E VÉGE
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.