Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

Hasonló dokumentumok
Java Programozás 2. Gy: EmpProgram. Grafikus felületű adatkezelő program

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Java Programozás 11. Ea: MVC modell

OOP: Java 8.Gy: Gyakorlás

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Programozási technológia

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Swing GUI készítése NetBeans IDE segítségével

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Java Programozás 3. Gy: Java GUI. Swing, AWT

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Java Programozás 10. Ea: JDBC. SQLite alapokon

Programozási technológia

OOP: Java 8.Gy: Abstract osztályok, interfészek

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Hozzunk létre két rekordot a táblában, majd véglegesítsünk (commit):

Johanyák Zsolt Csaba: Grafikus felület programozása. Copyright 2008 Johanyák Zsolt Csaba

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

A Java nyelv. Dialógus ablakok. Elek Tibor

Tájékoztató. Használható segédeszköz: -

Johanyák Zsolt Csaba: Képnézegető program oktatási segédlet

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

C#---Access adatbáziskezelési gyakorlat

7. K: JAVA alapok Konzultáció

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

BME MOGI Gépészeti informatika 4.

Informatika terméktervezőknek

OOP: Java 4.Gy: Java osztályok

BME MOGI Gépészeti informatika 7.

Java programozási nyelv 6. rész Java a gyakorlatban

4. Gy: JAVA osztályok

Access adatbázis elérése OLE DB-n keresztül

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

3. Határozza meg és írja ki a minta szerint, hogy a forrásállományban hány kémiai elem felfedezési adatai

Sorosítás (szerializáció) és helyreállítás. 1. Bináris sorosítás és helyreállítás Szükséges névterek Attribútumok. 1.3.

Webszolgáltatás és XML alapú adatbázis. 1. Az adatbázis megtervezése

Segítség a megoldáshoz: 1. Készítse el a Window-t az ábrának és az osztálydiagramnak megfelelően.

Teljesítményértékelések eredményeinek rögzítése az oktatói weben

Programozási nyelvek Java

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

A képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!

Osztályok. 4. gyakorlat

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Objektumorientált programozás C# nyelven III.

Kifizetések kezelése. 1 Kifizetési dátumok megadása pénzügyi kódokhoz

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

3. Osztályok II. Programozás II

Eseményvezérelt alkalmazások

HASZNÁLATI ÚTMUTATÓ DOLGOZÓK IMPORTÁLÁSA KULCS BÉR PROGRAMBA AZ ONLINE MUNKAIDŐ NYILVÁNTARTÓ RENDSZERBŐL. Budapest, november 08.

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

A feladatok megoldásához felhasználandó osztályok leírásait az alábbi URL-en találja meg:

Kalapácsvetés 2016 szöveges

1. feladat. Szabóné Nacsa Rozália

ZH mintapélda. Feladat. Felület

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Torna. A torna.csv UTF-8 kódolású állományban soronként egy versenyző eredményeit tároljuk. Az adatokat pontosvessző választja el egymástól.

BME MOGI Gépészeti informatika 8.

RAJZ1. vezetett gyakorlat

Entity Framework alapú adatbáziselérés

Java és web programozás

SDI ALKALMAZÁS I. Workspace / ResourceView / Toolbar / IDR_MAINFRAME. Workspace / ResourceView / Menu / IDR_MAINFRAME

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

INFORMATIKAI ALAPISMERETEK

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Java felhasználói felület

Vizuális programozás gyakorlat

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

M-Fájlok létrehozása MATLAB-ban

C#, OOP. Osztályok tervezése C#-ban

Programozási nyelvek II.: JAVA, 4. gyakorlat

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Objektumorientált programozás C# nyelven

Swing. (A javax.swing csomag)

I. 288.: Utcai WiFi térkép

Programozási nyelvek Java

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Java gyakorlat feladatai e s megolda sai ( )

Változáskezelés Verzió Dátum Változás Pont Cím Oldal Kiadás: Verzió: 2.0. Oldalszám: 2 / 7

Felhasználó által definiált adattípus

Szoftvertechnológia alapjai Java előadások

Szoftvertechnolo gia gyakorlat

ReszlAd fájl, kitöltési útmutató:

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Concurrency in Swing

Elemi Alkalmazások Fejlesztése Beadandó Feladat Juhász Ádám

OOP #14 (referencia-elv)

Archivált tanulmányi adatok importálása. Felhasználói dokumentáció verzió 2.0.

Prezentáció Microsoft PowerPoint XP

Diagram létrehozása. 1. ábra Minta a diagramkészítéshez

Átírás:

Java Programozás 7. Gy: Java alapok Adatkezelő 3.rész 39/1 B ITv: MAN 2018.04.11

A feladat 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. 39/2

Új dolgozó panel New \ Swing \ JDialog Vegyük ki a pipát! 39/3

Új dolgozó panel 1. Absolute layout beállítása 2. Háttérszín beállítása: Named colors\lightness\paleturquoise 3. 1 felirat (Kód:) és 1 szövegmező felpakolása 1. A JTextField változónevének megadása: kod 4. Felirat + szövegmező kijelölése, másolása, 39/4 beillesztése Ctrl + V 6. Felirat átírása, a szövegmező változónevének beállítása (nev) 7. 5+6 ismétlése (változók: szid, lak, iq) 8. Nyomógombok felpakolása (másolással) 9. Kód mező ne legyen szerkeszthető: 10. Ablak felirata: Ctrl 11. Futassuk a kódot, nézzük meg az eredményt! Ctrl + C

Új dolgozó panel Programlogika: 1. Legyen ez az ablak is modális. 2. 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. 3. 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)! 4. 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. 39/5

Új dolgozó panel Kódok beszúrása: A konstruktorba: Lehet, hogy kell: public EmpNew(JFrame f, int maxkod) { super(f, true); settitle("\u00daj dolgoz\u00f3 felvitele"); import javax.swing.jframe; Lekér gombhoz: btnlekr.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { kod.settext(""+(maxkod+1)); ); 39/6

Új dolgozó panel Kódok beszúrása: Új metódusok: public String RF(JTextField a) { return a.gettext().tostring(); String beolvasása szövegmezőből public boolean filled(jtextfield a) { Van adat a mezőben? String s = RF(a); if (s.length() > 0) return true; else return false; public boolean gooddate(jtextfield a) { Helyes a dátum? String s = RF(a); Date testdate = null; try { sdf: yyyy.mm.dd alakú dátumforma testdate = sdf.parse(s); catch (ParseException e){return false; if (sdf.format(testdate).equals(s)) return true; else return false; 39/7

Új dolgozó panel Kódok beszúrása: Új metódusok: public boolean goodint(jtextfield a) { Helyes az egész szám? 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"); 39/8

Ú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); 0 1 2 3 Szükséges import: import javax.swing.joptionpane; Szükséges változó: private String mes = "Emp program üzenet"; 39/9

Ú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); ); 39/10

Ú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); 39/11

Ú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){ Stringből dátum 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; 39/12 Stringből Integer

Az Emp típus elkészítése File \ New \ Class A típus.dat fájlba írásához szükséges, hogy sorosítható legyen! 1 3 4 2x 2 39/13 6 5

Az Emp típus kódja import java.io.serializable; public class Emp implements Serializable { private int kod; private String nev; private Date szulido; private String lakohely; private int iq; A Date típusra hibát kapunk. Megoldás: jobbklikk a Date-re \ Source \ Add import. A panelen válasszuk a java.util.date-et. 39/14

Az Emp típus kódja Konstruktor létrehozása A konstruktor létrehozása: Jobbklikk az üres háttérre \ Source \ Generate Constructor using fields 39/15

Az Emp típus kódja Getter metódusok hozzáadása: Jobbklikk az adattagok területére \ Source \ Generate Getters and Setters 39/16

Az Emp típus teljes kódja import java.io.serializable; import java.util.date; 2/1 public class Emp implements Serializable { private int kod; private String nev; private Date szulido; private String lakohely; private int iq; Adattagok public Emp(int kod, String nev, Date szulido, String lakohely, int iq){ this.kod = kod; this.nev = nev; this.szulido = szulido; this.lakohely = lakohely; Konstruktor this.iq = iq; 39/17

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; Getter metódusok 2/2 39/18

Ú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); ); 39/19

Ú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(); ); 39/20

Új dolgozó panel Töröljük ki a main függvényt a kódból: 39/21

Az Új dolgozó panel beépítése Programlogika- az Új dolgozó panel beépítése: 1. Az EmpProgram ablakban hozzunk létre egy Új adat nyomógombot 2. 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!) 3. Ha a bezárás ikonnal, vagy a Bezár gombbal bezárjuk a panelt, ne történjen semmi sem 4. 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! 39/22

Az EmpProgram panel módosítása 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 Ctrl + + C V 39/23

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"); 39/24

Az EmpProgram módosítása ujadat.addactionlistener(new ActionListener() { public void actionperformed(actionevent arg0) { ); 39/25 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(); Adat kiolvasása az Új adat panelről 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()); 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. tm.getvalueat(row, column)

Az Új adat funkció kipróbálása 4 1 2 6 5 3 39/26 7

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

A feladat 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 39/28

Az EmpProgram panel módosítása Másolással készítsük el a gombokat: Módosítás Törlés Kiírás Variable modosit torol kiir Text Módosítás Törlés Kiírás 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: 1. Jobb klikk a JComboBox-ra 2. Add event handler \ action \ actionperformed 39/29

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 legördülő 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(); ); 39/30

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); ); 39/31 public void SMD (String s){ JOptionPane.showMessageDialog(null, s, mes, 0);

Adatok kiírása csv fájlba Programlogika: 1. A rutin megkapja a kiírandó fájl nevét, és az adatokat tartalmazó táblamodell nevét 1. Kiírja a mezők nevét 2. Két egymásba ágyazott ciklussal végigmegy az adatokon, és kiírja őket a fájlba j etm.getcolumncount() i 39/32 etm.getrowcount()

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); 39/33

A Kiírás funkció kipróbálása 1 2 3 5 4 39/34

A kiírt adat visszaolvasása 3 C:\Users\bitman\workspace\EmpOrai\prb.csv 2 1 5 4 6 39/35

A Cél: >>> Forrás funkció (visszaírás a forrásba) Programlogika: 1. Ha kiválasztjuk ezt az opciót, és nincs kiválasztva Forrás, dobjunk hibaüzenetet! 2. Ha kiválasztjuk ezt az opciót, és van kiválasztva Forrás, írjuk ki a forrás nevét a Cél: mezőbe! 3. Ha megnyomjuk a Kiírás gombot, és ez az opció ki van választva, be kell azonosítani a Forrás típusát, nevét, és ennek megfelelően kell kiírni az adatokat! A legördülő lista (jcbc) kódjának módosítása: jcbc.addactionlistener(new ActionListener() { public void actionperformed(actionevent arg0) { cel = (String)jcbc.getSelectedItem(); if (cel.equals(">>> Forrás") && fnev.gettext().equals("")) SMD("Nincs megadva a Forrás!"); if (cel.equals(">>> Forrás") &&!fnev.gettext().equals("")) kifnev.settext(fnev.gettext()); ); 39/36

A Cél: >>> Forrás funkció (visszaírás a forrásba) A kiir gomb kódjának módosítása: 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); else if (cel.equals(">>> Forrás") && forras.equals("helyi.csv fájl")) { String kiirfnev = fnev.gettext(); kifnev.settext(kiirfnev); FileManager.CsvWriter(kiirfnev, etm); ); 39/37

Lista panel kialakítás a panel létrehozása 39/38

VÉGE VÉGE 39/39