Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaAtle Thorvaldsen Megváltozta több, mint 6 éve
1
Java Programozás 3. Gy: Java GUI Swing, AWT B IT M A N v:
2
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>();
3
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", )); emp.add(new Emp("Jó Zoli", )); emp.add(new Emp("Só Béla Peti", 99000)); emp.add(new Emp("Béla Tomi", )); } }
4
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);
5
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.
6
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);
7
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");
8
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");
10
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
11
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); }
12
Eclipse megoldás (Saját felelősségre!)
13
Eclipse megoldás (Saját felelősségre!)
14
Eclipse megoldás (Saját felelősségre!)
15
Eclipse megoldás (Saját felelősségre!)
16
Eclipse megoldás (Saját felelősségre!)
17
Eclipse megoldás (Saját felelősségre!)
+
18
Eclipse megoldás (Saját felelősségre!)
19
Eclipse megoldás (Saját felelősségre!)
20
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);
21
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(); });
22
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.
23
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.
24
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.
25
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 } });
26
Eclipse megoldás (Saját felelősségre!)
27
Eclipse megoldás (Saját felelősségre!)
29
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);
30
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); } });
31
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);
32
Ü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)
35
V É G E VÉGE
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.