Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaCsilla Ida Budai Megváltozta több, mint 6 éve
1
B M Java Programozás 6. Gy: Java alapok IT A N Adatkezelő 2.rész
2
A kód Feladat: folytassuk a panel életre keltését!
Alakítsuk ki a Lista panelt Betöltéskor olvassuk be az adatokat, és írjuk ki az adatsorok számát
3
Lista panel kialakítás – tábla modell létrehozása
A táblázat kezelése egy táblamodellel kezdődik. A modellben lehet megadni az egyes mezők típusát és szerkeszthetőségét. A DefaultTableModel leszármaztatásával jön létre, konstruktorában kapja meg a mezőneveket, és az oszlopok számát. Programlogika: Egy modellt használnánk csak a programban az egyszerűség miatt A módosításnál és a törlésnél ki kell jelölni egy rekordot, így szükséges egy jelölhető (logikai típusú) mező a sor elejére A mezők típusa rendre: logikai, egész, szöveg, szöveg, szöveg, egész Csak a legelső (logikai) mezőnek kell szerkeszthetőnek lennie (a kijelölhetőség miatt!)
4
Lista panel kialakítás – tábla modell létrehozása
File \ New \ Class
5
Lista panel kialakítás – tábla modell létrehozása
import javax.swing.table.DefaultTableModel; public class EmpTM extends DefaultTableModel { public EmpTM (Object fildNames[], int rows){ super(fildNames, rows); } public boolean isCellEditable(int row, int col) { if (col == 0) {return true;} return false; public Class<?> getColumnClass(int index){ if (index == 0) return(Boolean.class); else if (index==1 || index==5) return(Integer.class); return(String.class); Zöld: kötelező rész, minden táblamodell-ben egyforma! Konstruktor: megkapja a mezők nevét és a sorok számát. Szerkeszthetőség: a 0. oszlop minden sora szerkeszthető, a többi cella nem! Oszlopok típusa: a 0. oszlop logikai, az 1. és az 5. egész, a többi szöveges!
6
Lista panel kialakítás – a panel létrehozása
New \ Swing \ JDialog
7
Lista panel kialakítás – a panel létrehozása
Vegyük szélesebbre az ablakot
8
Lista panel kialakítás – a panel létrehozása
Kapcsoljuk ki az elrendezés menedzselését!
9
Lista panel kialakítás – a panel létrehozása
Töröljük ki a létrehozott nyomógomb panelt!
10
Lista panel kialakítás – a panel létrehozása
Hozzuk létre a Bezár nyomógombot
11
Lista panel kialakítás – a panel létrehozása
Adjunk a panelhez egy JTable-t.
12
Lista panel kialakítás – a panel létrehozása
Adjunk a JTable-höz egy JScrollPane-t (görgetősávok)
13
Lista panel kialakítás – a panel létrehozása
Futtassuk a kódot, nézzük meg a panelt!
14
Lista panel kialakítás – a panel létrehozása
Kódbűvölés következik! Az osztály elejére: private EmpTM etm; A JTable kódjába: table = new JTable(etm); A táblázatban az etm modell fog megjelenni A kódból töröljük a main függvényt! Nem lesz önállóan futtatható a panel, ezért nem kell bele a main függvény!
15
Lista panel kialakítás – a panel létrehozása
Alakítsuk át a konstruktor elejét: public EmpList(JFrame f, EmpTM betm) { super(f, "Dolgozók listája", true); etm = betm; Tulajdonos, ablak címe, modális jelző Modális ablak lesz, melyet be kell zárni ahhoz, hogy az alatta lévő ablak újra aktív legyen! A kód végére írjuk be a következőket: TableColumn tc = null; for (int i = 0; i < 6; i++) { tc = table.getColumnModel().getColumn(i); if (i==0 || i==1 || i==5) tc.setPreferredWidth(30); else {tc.setPreferredWidth(100);} } 30 100 Oszlopszélesség megadása: a teljes szélességet felosztja az itt megadott értékek arányában!
16
Lista panel kialakítás – a panel létrehozása
A kód végére írjuk be a következőket: AutoSorter bekapcsolása table.setAutoCreateRowSorter(true); TableRowSorter<EmpTM> trs = (TableRowSorter<EmpTM>)table.getRowSorter(); trs.setSortable(0, false); A 0. oszlop rendezhetőségének letiltása
17
Lista panel kialakítás – a panel bezárása
Kattintsunk duplán a Bezár gombon Dizájn nézetben, így az Eklipsz hozzáad egy eseménykezelőt a gombhoz, és megnyitja a kódot! Írjuk be a Bezár gomb kódját: JButton btnNewButton = new JButton("Bez\u00E1r"); btnNewButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { dispose(); setVisible(false); } });
18
A Lista panel kipróbálása (az EmpProgramban)
Kódok beszúrása: Az osztály elejére: private EmpTM etm; A Lista gomb kódja: JButton bl = new JButton("Lista"); bl.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { EmpList el = new EmpList(EmpProgram.this, etm); el.setVisible(true); } }); Példányosítás Megjelenítés A konstruktor végére: Mezőnevek megadása Object emptmn[] = {"Jel","Kód","Név","Szülidő","Lakóhely","IQ"}; etm = new EmpTM(emptmn, 0); etm példányosítása: mezőnevekkel, 0 darab sorral
19
A Lista panel kipróbálása (az EmpProgramban)
20
Adatok beolvasása csv fájlból
Programlogika: Egy külön osztályba tegyük a fájlkezelő rutinokat (FileManager) A rutin megkapja a beolvasandó fájl nevét, és a táblamodell nevét Beolvassa az adatokat, berakja a táblamodellbe, és visszaadja a táblamodellt import java.io.*; import javax.swing.JOptionPane; public class FileManager { private static String mes = "Emp program üzenet"; public static void CsvReader(File fnev, EmpTM etm) { String kod="", nev="", szido="", lakh="", iq="", s=""; try { FileInputStream f=new FileInputStream(fnev); LineNumberReader in=new LineNumberReader(new InputStreamReader(f)); 3/1
21
Adatok beolvasása csv fájlból
s=in.readLine(); //=== mezőnevek az első sorból s=in.readLine(); //=== adatsor while(s!=null) { String[] splitS = s.split(";"); kod = splitS[0]; nev = splitS[1]; szido = splitS[2]; lakh = splitS[3]; iq = splitS[4]; etm.addRow(new Object[]{new Boolean(false), StoI(kod), nev, szido, lakh, StoI(iq)}); s=in.readLine(); } in.close(); JOptionPane.showMessageDialog(null, "Adatok beolvasva!", mes, 1); } catch (IOException ioe) {JOptionPane.showMessageDialog( null, "CsvReader: "+ioe.getMessage(), mes, 0);} 3/2
22
Adatok beolvasása csv fájlból
public static int StoI(String s){ int x=-55; x = Integer.parseInt(s); return x; } 3/3
23
Betöltés – a .csv olvasás életre keltése
A Betöltés gomb kódja az EmpProgram osztályban JButton bb= new JButton("Bet\u00F6lt\u00E9s"); bb.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { if (forras.equals("Helyi .csv fájl")) { FileDialog fd = new FileDialog(new Frame(), " ", FileDialog.LOAD); fd.setFile("*.csv"); fd.setVisible(true); if (fd.getFile() != null) { fbe = new File(fd.getDirectory(), fd.getFile()); String befnev = fd.getFile(); fnev.setText(befnev); FileManager.CsvReader(fbe, etm); } fdb.setText(""+etm.getRowCount()); }); Zöld: a meglévő kód Kék: új kódrészek
24
Lista panel kialakítás – a panel kipróbálása
Ha mindent jól csináltunk, a program betölti és megjeleníti a csv fájlok tartalmát: 1 2 5 3 6 4
25
Lista panel kialakítás – a panel létrehozása
26
V É G E VÉGE
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.