Java Programozás 3. Gy: Java GUI Swing, AWT B IT M A N v: 2018.02.25.

Slides:



Advertisements
Hasonló előadás
II. Grafikus felhasználói interfész
Advertisements

Melyiket válasszam? Windows VS. Linux Készítette: Uher Bertalan.
Bevezetés a C# nyelvbe Az alapok összefoglalása Farkas Csaba.
 Alap tudnivalók Alap tudnivalók  Az If és a While folyamatábrák Az If és a While folyamatábrák  Probléma Probléma  A while ciklus (általános alak,
CÉLCÉLCSOPORT  Egészségügyi szakmai tájékoztatás és betegtájékoztatás, az egészséges életvitelhez szükséges információk szolgáltatása, publikálása, áttekint-
Monitor A monitor a személyi számítógép legfontosabb kiviteli (output) perifériája. Feladata az információk, adatok megjelenítése. Biztosítja a számítógéppel.
Neumann János Informatikai Kar
Fájlkezelés.
Operációs rendszerek.
Készítette Tanuló: Kereszturi Patrik
Alhálózat számítás Osztályok Kezdő Kezdete Vége Alapértelmezett CIDR bitek alhálózati maszk megfelelője A /8 B
Webszervizek (JAX-WS, és JAX-RS) bemutatása
Montázs készítése.
Java kódolási konvenciók
Scilab programozás alapjai
Adatok importálása, rendezése és szűrése
Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök
Kérdések és válaszok az előfizetéses rendszerekről
C# SZINTAKTIKÁJA Az egyes utasítások végén pontosvessző áll
Rangsorolás tanulása ápr. 13..
Dependency Injection Moq Feladat
Visual Studio Code Metrics
Animációk.
Programozás I. 5. gyakorlat.
Ez a címdia 1. szövegdoboza
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
Közigazgatási alapvizsga a Probono rendszerben
Grosz imre f. doc. Kombinációs hálózatok /43 kép
Az Endnote bibliográfia adatbázis-kezelő szoftver alapvető használata november Skultéti Attila
STRUKTURÁLT SERVEZETEK: funkció, teljesítmény és megbízhatóság
Pozitív gondolatok.
3. A robot képernyőmenüje
Monitor(LCD).
Beépített assetek (Standard Assets).
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Programozás I. 4. gyakorlat.
Tevékenységünk Célunk P92rdi Kft - p92rdi.hu Kutatás (Research)
Szoftverrobotok vs biorobotok Bemutatkozik Albert, a vállalati robot
Informatikai gyakorlatok 11. évfolyam
B M Java Programozás 4. Gy: Java GUI IT A N Tipper, MVC kalkulátor
Online jegyzőkönyv kitöltési segédlet
Környezeti Kontrolling
A Microsoft SharePoint testreszabása Online webhely
Pozitív gondolatok.
A távoli asztal, valamint az Endnote használata a távoli asztalon
Biró László Miklós Napi mentés: Biró László Miklós
B M Java Programozás 9. Gy: Java alapok IT A N Adatkezelő 5.rész
B M Java Programozás 7. Gy: Java alapok IT A N Adatkezelő 3.rész
Vasbeton falvasalás megadása és ellenőrzése EC2 szerint
Pozitív gondolatok.
További rendező és kereső algoritmusok
Szálszinkronizáció.
A szállítási probléma.
Cisco Router parancssoros konfigurálása
B M Java Programozás 6. Gy: Java alapok IT A N Adatkezelő 2.rész
B M Java Programozás 5. Gy: Java alapok IT A N Adatkezelő 1.rész
B M Java Programozás 2. Gy: Java alapok IT A N Adatszerkezetek
B M Java Programozás 8. Gy: Java alapok IT A N Adatkezelő 4.rész
SQL jogosultság-kezelés
ANTOINE DE SAINT- EXUPERY Gondolatok „A kis herceg” című könyvből.
Dr. Vasas Lívia, PhD december
Az „Egyetlen PPG” vagyunk
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Szállításszervezési módszerek Járattípusok 1
Informatika Oktató: Katona Péter.
Java alkalmazások 6. Előadás.
Java alkalmazások 10. Előadás.
ANTOINE DE SAINT- EXUPERY Gondolatok „A kis herceg” című könyvből.
OpenBoard Kezelő Tananyag közzététele a KRÉTA rendszerben.
VÁLTOZÓ EURÓPA (Nemzet)Biztonsági szemmel
Előadás másolata:

Java Programozás 3. Gy: Java GUI Swing, AWT B IT M A N v: 2018.02.25

Feladat A java.util.ArrayList osztályban található Példányosítani kell Készítsük el az Emp osztály kezelő programját úgy, hogy ArrayList-et (listatömb, tömblista, rugalmas tömb) használunk. A java.util.ArrayList osztályban található Példányosítani kell Csak burkoló osztály lehet az elemtípusa Integer, Double, Character, Long, Boolean… A lista csak és kizárólag referencia típusú adatokat képes tárolni, így primitív típusokat nem rakhatunk bele. Fontos metódusok: add(), size(), get(index), indexOf(érték), toString() remove(érték), set(index, érték), toArray() ArrayList<típus> = new ArrayList<típus>();

Feladat Készítsük el az Emp osztály kezelő programját úgy, hogy ArrayList-et (listatömb, tömblista, rugalmas tömb) használunk. Kezdjük a programosztállyal. import java.util.ArrayList; public class EmpPrg { private static ArrayList<Emp> emp = new ArrayList<Emp>(); public static void main(String[] args) { emp.add(new Emp("Kis Béla", 250000)); emp.add(new Emp("Jó Zoli", 325000)); emp.add(new Emp("Só Béla Peti", 99000)); emp.add(new Emp("Béla Tomi", 420000)); } }

A kód A print metódus kódja az Emp-ben: Hívása az EmpPrg-ben: import java.util.ArrayList; public class Emp { . . . public static void print(ArrayList<Emp> emp){ System.out.println(""); for (Emp e : emp) System.out.println(e); } Hívása az EmpPrg-ben: Emp.print(emp);

A kód A sortNev metódus kódja az Emp-ben: Hívása az EmpPrg-ben: import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Emp { . . . public static void sortNev(ArrayList<Emp> emp){ Collections.sort(emp, new Comparator<Emp>() { public int compare(Emp e1, Emp e2) { return e1.nev.compareTo(e2.nev); } }); print(emp); Emp.sortNev(emp); A { } között egy névtelen osztály található, ami implementálja a Comparator interfészt. Az interfész compare metódusát kell felüldefiniálni: a két bemenő elemet kell összehasonlítani úgy, hogy int típusú értéket adjon eredményül.

A kód A sortFiz metódus kódja az Emp-ben: Hívása az EmpPrg-ben: import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Emp { . . . public static void sortFiz(ArrayList<Emp> emp){ Collections.sort(emp, new Comparator<Emp>() { public int compare(Emp e1, Emp e2) { return e1.fiz - e2.fiz; } }); print(emp); Hívása az EmpPrg-ben: Emp.sortFiz(emp);

A kód A search metódus kódja az Emp-ben: Hívása az EmpPrg-ben: public class Emp { . . . public static void search(ArrayList<Emp> emp, String s) { boolean b = false; for (Emp e : emp) if (e.nev.contains(s)) b = true; //if (e.nev.equals(s)) b = true; System.out.println(""); if (b) System.out.println(s+": létezik"); else System.out.println(s+": nem létezik"); } Hívása az EmpPrg-ben: Emp.search(emp, "Kis Béla");

A kód A searchFirstName metódus kódja az Emp-ben: public class Emp { . . . public static void searchFirstName(ArrayList<Emp> emp, String s){ System.out.println(""); for (Emp e : emp) { boolean b = false; String[] n = e.nev.split(" "); for (int j=1; j<n.length; j++) if (n[j].equals(s)) b = true; if (b) System.out.println(s+": "+e.nev); } Hívása az EmpPrg-ben: Emp.searchFirstName(emp, "Béla");

Feladat Készítsük el a grafikus felületű "Helló világ" programot. Lépések: A main metódusban példányosítunk egy JFrame-et. Megadjuk a frame helyét, méretét. A frame tartalom elrendezőjét kikapcsoljuk. Készítünk egy feliratot (JLabel). Megadjuk a felirat helyét, méretét. A frame tartalompaneljéhez hozzáadjuk a feliratot Beállítjuk, hogy mi történjen a frame-el, ha bezárjuk az ablakot. Megjelenítjük a frame-et. A program ablaka átméretezhető, tálcára helyezhető, teljes képernyő méretűvé tehető. A program így egyetlen szálon fog futni

A kód – v1 Logika: komponens példányosítása, aztán méretezése, aztán hozzáadása az ablakhoz. x y xm ym yk xk import javax.swing.*; public class HelloGr { public static void main(String[] args) { JFrame Foablak = new JFrame("Grafikus Hello"); Foablak.setBounds(50,50, 260,150); Foablak.getContentPane().setLayout(null); JLabel Felirat = new JLabel("Helló világ"); Felirat.setBounds(30,10, 100,20); Foablak.getContentPane().add(Felirat); Foablak.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Foablak.setVisible(true); }

Eclipse megoldás (Saját felelősségre!)

Eclipse megoldás (Saját felelősségre!)

Eclipse megoldás (Saját felelősségre!)

Eclipse megoldás (Saját felelősségre!)

Eclipse megoldás (Saját felelősségre!)

Eclipse megoldás (Saját felelősségre!) +

Eclipse megoldás (Saját felelősségre!)

Eclipse megoldás (Saját felelősségre!)

A kód – v1 (by Eclipse) by BitMan import javax.swing.*; public class HelloGr { public static void main(String[] args) { JFrame Foablak = new JFrame("Grafikus Hello"); Foablak.setBounds(50,50, 260,150); Foablak.getContentPane().setLayout(null); JLabel Felirat = new JLabel("Helló világ"); Felirat.setBounds(30,10, 100,20); Foablak.getContentPane().add(Felirat); Foablak.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Foablak.setVisible(true); } by BitMan import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; public class GraphHello extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { GraphHello frame = new GraphHello(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } }); * Create the frame. public GraphHello() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 275, 196); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel lblNewLabel = new JLabel("Hello World!"); lblNewLabel.setBounds(10, 11, 82, 14); contentPane.add(lblNewLabel);

A kód – v2 import javax.swing.*; public class HelloGr2 { private static void createAndShowGui() { JFrame Foablak = new JFrame("Grafikus Hello"); JLabel Felirat = new JLabel("Helló világ"); Foablak.getContentPane().add(Felirat); Foablak.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Foablak.pack(); Foablak.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGui(); });

A kód – v2 Logika: az alapértelmezett tartalom elrendezőt meghagyjuk, példányosítjuk és pakoljuk a komponenseket, aztán becsomagoljuk az ablakot. pack(): a metódus hívásakor a tartalom elrendező úgy állítja be a komponensek méretét, helyét, hogy minden elférjen a keretben. invokeLater(): új szálon indítja el a megadott kódot. Runnable(): interfész, melyet implementálni kell azokban az osztályokban, amelyekben szálkezelést hajtunk végre. run(): ezzel a metódussal indítható el kód az adott szálon. Ha több szálon futó programot írunk, így lehet egy szálat elindítani. Tapasztalat: ha az egyes grafikus komponensek lekezelését végző kódok nem túl idő- és energia igényesek, akkor futhat egyetlen szálon a grafikus program.

A kód – v3 import javax.swing.*; public class HelloGr3 extends JFrame { public HelloGr3() { setTitle("Grafikus Hello"); setBounds(50,50, 300,160); //setSize(300, 160); //csak méret megadás //setLocationRelativeTo(null); //ablak középre helyezése JPanel dp = new JPanel(); dp.setLayout(null); getContentPane().add(dp); JLabel jl1 = new JLabel("Helló világ"); dp.add(jl1); jl1.setBounds(20,50, 100,20); } public static void main(String[] args) { HelloGr3 hg = new HelloGr3(); hg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); hg.setResizable(false); hg.setVisible(true); 1. 2. 3. 4. 5. 6. 7. 8.

A kód – v3 Logika: A JFrame leszármazottjaként létrehozunk egy osztályt. Megadjuk az ablak nevét, helyét, méretét. Létrehozunk egy JPanel-t. Kikapcsoljuk a panel tartalom elrendezőjét. A panelt hozzáadjuk a frame tartalmához. A panelre rakjuk a komponenseket. Példányosítjuk az osztályt. Letiltjuk a frame méretezhetőségét. A módszer viszonylag egyszerű, a kód átlátható, könnyen módosítható, bővíthető. Az ablak nem méretezhető át, így a tartalom sosem torzul el, mindig értelmezhető marad.

A kód Szereljünk a panelre egy nyomógombot, funkciója legyen: bezárás. JButton bc = new JButton(); bc.setText("Bezár"); dp.add(bc); bc.setBounds(180,48, 80,24); bc.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); //==a program leállítása } });

Eclipse megoldás (Saját felelősségre!)

Eclipse megoldás (Saját felelősségre!)

A kód Rakjunk a panelra egy szövegmezőt, és egy újabb nyomógombot, melynek funkciója: a szövegmezőbe írt adat kiírása egy üzenetpanelre. import java.awt.event.*; import javax.swing.*; public class HelloGr32 extends JFrame { public HelloGr32() { setTitle("Beolvasó, kiíró példa"); setBounds(50,50, 300,160); JPanel dp = new JPanel(); dp.setLayout(null); this.getContentPane().add(dp); JLabel jl1 = new JLabel("Írj be valamit!"); dp.add(jl1); jl1.setBounds(20,20, 150,20);

A kód JTextField adat = new JTextField(""); dp.add(adat); adat.setBounds(20,50, 220,20); JButton ba = new JButton(); ba.setText("Kiír"); dp.add(ba); ba.setBounds(60,90, 80,24); ba.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String s = adat.getText(); JOptionPane.showMessageDialog(HelloGr32.this, "A beírt adat: "+s, "Üzenet a programtól", 1); } });

A kód JButton bc = new JButton(); bc.setText("Bezár"); dp.add(bc); bc.setBounds(160,90, 80,24); bc.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); } //== main vége public static void main(String[] args) { HelloGr32 hg = new HelloGr32(); hg.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); hg.setResizable(false); hg.setVisible(true);

Üzenetpanel JOptionPane.showMessageDialog(T, Ü, F, I) - Üzenetablak megjelenítése. A megjelenő ablak modális, ez kb. azt jelenti, hogy amíg le nem OKézzuk, nem folytathatjuk a főprogram használatát! T - A tulajdonos (most null, vagyis nincs definiálva) Ü – A panelen megjelenő üzenet szövege F - A panel címe, felirata (most a globális bm string) I - A panel ikonja (0-Stop, 1-Info, 2-Figyelmeztetés, 3-Kérdés)

V É G E VÉGE