Programozási technológia I. Dr. Szendrei Rudolf
Programozási technológia I. Swing GUI készítése NetBeans IDE segítségével GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
GUI események kezelése Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem 1
Programozási technológia I.
Tartalom
Dr. Szendrei Rudolf
1 GUI készítés NetBeans-el
Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
GUI események kezelése
2 GUI események kezelése
Események hozzárendelése
Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
2
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
Bevezeto˝ • Eddig a grafikus felhasználói felületet kódból hoztuk létre
GUI készítés NetBeans-el
kézzel.
Bevezeto˝
• A mi feladatunk volt az eseménykezelok ˝ implementálása
Projekt létrehozása GUI Builder
˝ és azoknak a megfelelo˝ grafikus vezérloelemekhez rendelése. • Szeretnénk, hogy
˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
GUI események kezelése
• grafikus tervezo˝ felületen készíthessük el a felhasználói
Események hozzárendelése
interfészeket, és
Hozzáad gomb
• az eseménykezeloket ˝ ˝ még a tervezoben
Szerkeszt gomb
˝ hozzárendelhessük a vezérloelemekhez (nekünk csak azok megvalósításával kelljen foglalkoznunk).
Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
3
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
Bevezeto˝ GUI készítés NetBeans-el
• A NetBeans IDE fejleszto˝ környezet mindkét elvárást
Bevezeto˝
teljesíti (ha Swing GUI-t akarunk készíteni).
Projekt létrehozása GUI Builder ˝ Beviteli mezok
• Nincs szükségünk a LayoutManager muködésének ˝
˝ Kezelogombok
megértésére.
Rádiógombok A generált kód
• Egyszeru˝ húzd és ejtsd (Drag&Drop) módon helyezhetjük
GUI események kezelése
el a kívánt vezérlo˝ elemeket a form-on. • A tervezo˝ segítségével a GUI készítés gyorsabbá teheto. ˝
Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
4
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
Projekt létrehozása
Készítsünk egy egyszeru˝ form-ot, amin megadhatjuk egy személy névjegyét. GUI készítés NetBeans-el
• Hozzunk létre egy új projektet a NetBeans-ben
Bevezeto˝
(File > New Project)
Projekt létrehozása GUI Builder ˝ Beviteli mezok
• Válasszuk a Java-t a kategóriák közül, majd a Java
˝ Kezelogombok Rádiógombok
˝ Application-t a projektekbol
A generált kód
GUI események kezelése
• Legyen a projekt neve ContactEditor
Események hozzárendelése
• Use Dedicated Folder for Storing Libraries:
Hozzáad gomb
Nem
Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb
• Create Main Class: Igen
Listaelem kiválasztása
• Kattintsunk a Finish gombra
5
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
JFrame létrehozása
˝ A programunk felhasználói felületének vezérloelemeit a JFrame tartalmazza, amit a következo˝ módon hozunk most létre:
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder
• A projekt ablakban kattintsunk jobb gombbal a projektünk
˝ Beviteli mezok ˝ Kezelogombok
nevére (ContactEditor), majd válasszuk a New > JFrame Form... -ot
Rádiógombok A generált kód
GUI események kezelése
• Osztálynév: ContactEditorUI
Események hozzárendelése
• Csomag neve: my.contacteditor
Hozzáad gomb Szerkeszt gomb Eltávolít gomb
• Kattintsunk a Finish gombra
Alaphelyzet gomb Listaelem kiválasztása
6
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
GUI Builder
A JFrame létrehozása után a NetBeans átvált a GUI tervezo˝ ˝ ablakai: nézetbe, és megjelennek a fobb • Tervezo˝ ablak: Itt helyezhetjük el a vezérloelemeket ˝ a formon,
GUI készítés NetBeans-el Bevezeto˝
• Source gomb: megnézhetjük az osztály forráskódját • Design gomb: átválthatunk a grafikus megjelenítésre • History gomb: eddigi változtatások listája
Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok
• Navigátor ablak: • Tartalmazza az összes komponenst (a láthatóakat és nem láthatóakat egyaránt) egy fa szerkezetben.
A generált kód
GUI események kezelése Események hozzárendelése
• Palette ablak: • Tartalmazza a használható vezérlo˝ komponenseket, layout menedzsereket kategóriákba rendezve • A tartalmát átrendezhetjük
Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
• Properties ablak: • megmutatja a kiválasztott vezérloelem ˝ tulajdonságait 7
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
GUI események kezelése Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
8
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
˝ GUI kialakítása – Beviteli mezok • Tegyünk a formra egymás alá két JPanel-t • A JPanel Properties ablakában a Border-t választva a
megjeleno˝ ablak listájában válasszuk a Titled Border-t
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása
• Adjuk meg a text mezoben ˝ a keret címkéjét (Név, E-Mail)
GUI Builder ˝ Beviteli mezok
• Adjuk hozzá a Név kerethez a következoket: ˝
˝ Kezelogombok Rádiógombok A generált kód
• ’Vezetéknév’ feliratú címke(JLabel)
GUI események kezelése
• Szövegbeviteli mezo˝ a vezetéknévnek (JTextField)
Események hozzárendelése
• ’Utónév’ feliratú címke (JLabel)
Hozzáad gomb
• Szövegbeviteli mezo˝ az utónévnek (JTextField)
Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb
• Adjuk hozzá az E-Mail kerethez a következoket: ˝ • ’E-Mail cím’ feliratú címke (JLabel)
Listaelem kiválasztása
• Szövegbeviteli mezo˝ az E-Mail címnek (JTextField) • E-Mail címek listája (JList) 9
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
GUI események kezelése Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
10
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
˝ GUI kialakítása – Kezelogombok
GUI készítés NetBeans-el Bevezeto˝
• Egészítsük ki a form-ot a megfelelo˝ funkciókhoz tartozó
Projekt létrehozása
gombokkal:
GUI Builder ˝ Beviteli mezok ˝ Kezelogombok
• Hozzáad (JButton)
Rádiógombok A generált kód
• Szerkeszt (JButton)
GUI események kezelése
• Eltávolít (JButton)
Események hozzárendelése
• Alaphelyzet (JButton)
Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
11
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
GUI események kezelése Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
12
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
GUI kialakítása – Rádiógombok
GUI készítés NetBeans-el Bevezeto˝
• A form alján adhassuk meg, hogy milyen típusú levelet
Projekt létrehozása
kaphat a személy az adott E-Mail címére:
GUI Builder ˝ Beviteli mezok ˝ Kezelogombok
• ’E-Mail formátuma:’ (JLabel)
Rádiógombok A generált kód
• ’HTML’ (JRadioButton)
GUI események kezelése
• ’Egyszeru˝ szöveges’ (JRadioButton)
Események hozzárendelése
• ’Egyéni’ (JRadioButton)
Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
13
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
GUI események kezelése Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
14
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
GUI kialakítása – Rádiógombok • A rádió gombok csak akkor alkotnak egy csoportot, ha
GUI készítés NetBeans-el
azokat egy gomb csoporthoz társítjuk (ButtonGroup).
Bevezeto˝ Projekt létrehozása
• A Palette ablakban válasszuk ki a ButtonGroup
GUI Builder ˝ Beviteli mezok
˝ komponenst és kattintsunk a form egy tetszoleges helyére.
˝ Kezelogombok Rádiógombok A generált kód
GUI események kezelése
• A rádió gombok egy csoportba fogásához jelöljük ki
mindhármat egyszerre, majd a Properties ablakban állítsuk be a buttonGroup tulajdonság legördülo˝ menüjében az imént létrejött buttonGroup1 komponenst.
Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
15
Programozási technológia I.
GUI készítés NetBeans-el
Dr. Szendrei Rudolf
A generált kód • A GUI Builder által generált kód a tervezoben ˝ a Source
gomb megnyomásával érheto˝ el. • A formon elhelyezett valamennyi komponensnek a változóját megtaláljuk a ContactEditorUI.java fájl végén, a hozzájuk kapcsolódó elrendezéseket pedig a NetBeans az initComponents függvényben helyezi el.
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok
• A létrehozott osztály konstruktora kezdetben csak egyetlen
A generált kód
GUI események kezelése
hívást tartalmaz az initComponents függvényre.
Események hozzárendelése
• Az osztályban automatikus generálódik egy main
Hozzáad gomb
függvény is, aminek a segítségével közvetlenül is futtathatjuk a létrehozott formból álló alkalmazásunkat. (Ehhez azonban a projekt beállítások között be kell állítanunk a main class-nak a ContactEditorUI osztályt.)
Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
16
Programozási technológia I.
GUI események kezelése
Dr. Szendrei Rudolf
Események hozzárendelése • Ahhoz, hogy a létrehozott gombokhoz tevékenységeket
adhassunk meg, hozzá kell rendelnünk egy ˝ az egyes eseményekhez. Ehhez eseménykezelot ActionListener-t fogunk rendelni ActionEvent-ekhez.
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder
• Jobb egérgombbal kattintsunk a ’Hozzáad’ gombra a
˝ Beviteli mezok
formon.
˝ Kezelogombok Rádiógombok A generált kód
• A megjeleno˝ menüben válasszuk az
GUI események kezelése
Events > Action > actionPerformed-ot.
Események hozzárendelése
• A tervezo˝ automatikusan hozzáadja a gombhoz az
Hozzáad gomb Szerkeszt gomb
ActionListener-t és legenerálja az eseménykezelo˝ függvényt a listener actionPerformed metódusához.
Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
private void btnAddActionPerformed( java.awt.event.ActionEvent evt) { // TODO add your handling code here: } 17
Programozási technológia I.
GUI események kezelése
Dr. Szendrei Rudolf
Események hozzárendelése • A kódban az eseménykezelo˝ nem törölheto, ˝ ezért ha erre
˝ van szükségünk, akkor a tervezoben válasszuk ki a gombot, majd a tulajdonságok között az Events lapon állítsuk vissza az actionPerformed-ot <none>-ra. • Az eseménykezelok ˝ nevei mindig a vezérloelem ˝ ˝ és az esemény nevébol ˝ generálódnak, változónevébol ˝ ezért is érdemes a vezérloelemek neveit már a létrehozáskor megváltoztatni. • A vezérloelem ˝ neve, amit a paraméter ablakban adhatunk ˝ meg, nem tévesztendo˝ össze a vezérloelemhez tartozó változó nevével! • A vezérloelemhez ˝ ˝ tartozó változó nevét a vezérloelemre jobb egérgombbal való kattintáskor megjeleno˝ menü Change Variable Name... pontjával változtathatjuk meg.
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
GUI események kezelése Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
18
Programozási technológia I.
GUI események kezelése
Dr. Szendrei Rudolf
Események hozzárendelése – Hozzáad gomb private void btnAddActionPerformed( java.awt.event.ActionEvent evt)
GUI készítés NetBeans-el Bevezeto˝
{
Projekt létrehozása
DefaultListModel model; try { model = (DefaultListModel)listEmails.getModel(); } catch (java.lang.ClassCastException e) { model = new DefaultListModel(); listEmails.setModel(model); } model.addElement(txtFieldEmailAddress.getText());
GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
GUI események kezelése Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb
}
Listaelem kiválasztása
19
Programozási technológia I.
GUI események kezelése
Dr. Szendrei Rudolf
Események hozzárendelése – Szerkeszt gomb private void btnEditActionPerformed( java.awt.event.ActionEvent evt) { try { DefaultListModel model = (DefaultListModel)listEmails.getModel();
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok
int index = listEmails.getSelectedIndex();
A generált kód
GUI események kezelése
if (index == -1) return;
Események hozzárendelése
model.setElementAt(txtFieldEmailAddress.getText(), index); } catch (java.lang.ClassCastException e) { }
Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
}
20
Programozási technológia I.
GUI események kezelése
Dr. Szendrei Rudolf
Események hozzárendelése – Eltávolít gomb private void btnRemoveActionPerformed( java.awt.event.ActionEvent evt) { try { DefaultListModel model = (DefaultListModel)listEmails.getModel();
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok
int index = listEmails.getSelectedIndex();
A generált kód
if (index != -1) { model.removeElementAt(index); }
GUI események kezelése Események hozzárendelése Hozzáad gomb
} catch (java.lang.ClassCastException e) { }
Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
}
21
Programozási technológia I.
GUI események kezelése
Dr. Szendrei Rudolf
Események hozzárendelése – Alaphelyzet gomb GUI készítés NetBeans-el
private void btnDefaultActionPerformed( java.awt.event.ActionEvent evt)
Bevezeto˝ Projekt létrehozása GUI Builder
{
˝ Beviteli mezok
try {
˝ Kezelogombok Rádiógombok
listEmails.setModel(new DefaultListModel()); } catch (java.lang.ClassCastException e) { }
A generált kód
GUI események kezelése Események hozzárendelése Hozzáad gomb
}
Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
22
Programozási technológia I.
GUI események kezelése
Dr. Szendrei Rudolf
Események hozzárendelése – Listaelem kiválasztása GUI készítés NetBeans-el
• A szerkesztés funkcióhoz általában társul az is, hogy a
Bevezeto˝
listában kiválasztott elem tartalma megjelenik a ˝ szerkeszto˝ mezo(k)ben.
Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok
• Ehhez egy eseménykezelot ˝ kell rendelnünk a listához.
Rádiógombok A generált kód
• Kattintsunk a tervezoben ˝ a listára a jobb egér gombbal,
GUI események kezelése
majd a menüben válasszuk ki az Events > ListSelection > valueChanged eseményt.
Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb Listaelem kiválasztása
23
Programozási technológia I.
GUI események kezelése
Dr. Szendrei Rudolf
Események hozzárendelése – Listaelem kiválasztása
Írjuk be az alábbi kódot a megvalósításhoz: private void listEmailsValueChanged( javax.swing.event.ListSelectionEvent evt) { try { DefaultListModel model = (DefaultListModel)listEmails.getModel();
GUI készítés NetBeans-el Bevezeto˝ Projekt létrehozása GUI Builder ˝ Beviteli mezok ˝ Kezelogombok Rádiógombok A generált kód
int index = listEmails.getSelectedIndex();
GUI események kezelése
if (index != -1) { txtFieldEmailAddress.setText( model.getElementAt(index).toString()); }
Események hozzárendelése Hozzáad gomb Szerkeszt gomb Eltávolít gomb Alaphelyzet gomb
} catch (java.lang.ClassCastException e) { }
Listaelem kiválasztása
}
24