Java Programozás 5. Gy: Java alapok Adatkezelő 1.rész 27/1 B ITv: MAN 2018.04.13
Feladat Egy nagyon hosszú feladatmegoldásba kezdünk bele: létrehozunk egy adatkezelő programot, sok-sok extrával: 27/2
A kód 1. feladat: töltse le mindenki a programot, és olvassa át a Helpet! 27/3
A kód 2. feladat: készítsük el a főablak egy részét: - Nyomógombok - Feliratok - Legördíthető lista - Szövegmezők - Panel háttérszín 27/4
A projekt létrehozása File \ New \ Java project 27/5
Az ablak létrehozása a projekthez New \ Swing \ JFrame 27/6
Layout (elrendezés) beállítása Váltsunk Design felületre! Helyi menüből (jobb klikk) adjuk ki a parancsot: Set Layout \ Absolute layout Így kikapcsoljuk az elrendezés menedzselést, és minden ott fog megjelenni, ahová rakjuk! 27/7
Panel háttérszín beállítása Panel legyen kijelölve! 27/8 2x
Nyomógombok készítése Középső területen: Components \ Jbutton Bal oldalon: Properties \ text Ezután duplán kattintsunk a Betöltés gombra, így az Eclipse hozzáad egy akciókezelőt a gomb kódjához (és átvált a kódra) 27/9
Nyomógombok készítése Kódban átalakítjuk a gomb tulajdonságait! Itt is át lehet írni az adatokat (változónév, elhelyezkedés, méret, de egyszerűbb a Design nézeten!) 27/10 Dizájn felület Futtatási felület
Nyomógombok készítése másolással 1. Váltsunk Design nézetre 2. Kijelöljük a meglévő (beállított) gombot, és Ctrl + C 3. Ezután Ctrl + V, és a megfelelő helyre rakjuk a gombot 4. Beállítjuk a tulajdonságait (Properties) Legördítve szerkeszthető 27/11
Nyomógombok készítése másolással 1. Bezár gomb létrehozása másolással, beállítása panelen 2. Eseménykezelő hozzáadása: 1. Jobb klikk a gombra 2. Add event handler \ action \ actionperformed Egyszerűbb duplán kattintani! 3. Kódban beírni: System.exit(0); 27/12 bz.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { System.exit(0); } });
Feliratok elkészítése Jlabel hozzáadása, beállítása A másodikat egyszerűbb másolni! 27/13
Legördíthető lista elkészítése JComboBox elem hozzáadása a panelhez Változó nevének módosítása (jcbf) 27/14
Legördíthető lista elemek hozzáadása Kódban módosítások: String elem[] = {"Válasszon!","Helyi.dat fájl", "Helyi.xml fájl","helyi.csv fájl","sqlite DB", "Web: JSON fájl"}; JComboBox jcbf = new JComboBox(); for (String s: elem) jcbf.additem(s); Kipróbálás: Meglévő kódsor 27/15 Futtatási felület
Szövegmezők hozzáadása Dizájn felületen: 27/16
Szövegmezők hozzáadása Dizájn felületen: 27/17
Legördíthető lista események kezelése Dizájn felületen módosítás: Kódban: private String forras="válasszon!"; 27/18 Eseménykezelő hozzáadása: 1. Jobb klikk a JComboBox-ra 2. Add event handler \ action \ actionperformed JComboBox jcbf = new JComboBox(); for (String s: elem) jcbf.additem(s); jcbf.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { forras = (String)jcbf.getSelectedItem(); } }); fnev.settext(forras); fdb.settext("4"); Meglévő kódsorok Kipróbálás, tesztelés miatt! Rövidesen módosítjuk!
Legördíthető lista próba Futtassuk a programot: Futtatási felület 27/19
Hozzuk létre az Emp.csv fájlt Bárhol lehet a fájlrendszerben! Olyan szövegfájl, mely első sorában tartalmazza a mezők nevét, ezután soronként az adatokat, pontosvesszővel elválasztva! Jobb klikk egy mappában \ Új \ Szöveges dokumentum Adjuk meg a nevét: Emp.csv Íjuk be az adatokat, mentsük le! 27/20
Magyarázatok Programlogika: 1. Kiválasztjuk a forrást 2. A Betöltés gombra kattintva megjelenik egy fájlválasztó panel A panelen csak olyan kiterjesztésű fájlt választhatunk ki, amilyen a kiválasztott forrás típusa! 3. Válasszunk ki a panelen egy fájlt 4. A kiválasztott fájl neve íródjon ki a forrás melletti mezőbe 5. Olvassuk be az adatokat, és írjuk ki a számukat 27/21
Betöltés eseménykezelő hozzáadása Design felületen kattintsunk duplán a Betöltés gombra, aztán módosítsuk a kódot: JButton bb= new JButton("Bet\u00F6lt\u00E9s"); bb.addactionlistener(new ActionListener() { public void actionperformed(actionevent arg0) { if (forras.equals("helyi.csv fájl")) { FileDialog példányosítása FileDialog fd = new FileDialog(new Frame(), " ", FileDialog.LOAD); } }); 27/22 } Csak.csv fájlok jelenjenek meg fd.setfile("*.csv"); fd.setvisible(true); FileDialog láthatóvá tétele if (fd.getfile()!= null) { fbe = new File(fd.getDirectory(), fd.getfile()); String befnev = fd.getfile(); fnev.settext(befnev); } Könyvtár és fájlnév, együtt a fájl! Importok szükségesek a FileDialog és a File miatt, és kell az fbe változó deklarációja is!
Betöltés csv esemény kódja Szükséges importok, változók: import java.io.*; import java.awt.*; private File fbe; 3 2 1 5 FileDialog panel 27/23 7 4 6
További módosítások Ha nincs kiválasztva forrás, a Betöltés megnyomása dobjon hibaüzenetet: JButton bb= new JButton("Bet\u00F6lt\u00E9s"); bb.addactionlistener(new ActionListener() { public void actionperformed(actionevent arg0) { if (forras.equals("válasszon!")) JOptionPane.showMessageDialog( null, "Először válassza ki a Forrás-t!", mes, 0); } }); if (forras.equals("helyi.csv fájl")) {... } Szükséges deklaráció: 0 1 2 3 27/24 private String mes = "Emp program üzenet";
További módosítások Hiányzott valamilyen import, ezen berágtam, és a meglévő összes importot kitöröltem, és helyettesítettem a következővel: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; Egy hibás sor maradt, valamilyen EmptyBorder. Mondtam kétszer az Eklipsznek, hogy ha akarja, javítsa ki, de nem akarta. Így ezt a sort kitöröltem! Nem haragszom az Eklipszre, csak azt érezteti velem, hogy felsőbb rendű mint én, és ezt nem szeretem! 27/25
Próba Nekem működik a kód! 27/26
VÉGE VÉGE 27/27