Java felhasználói felület

Hasonló dokumentumok
Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Java felhasználói felület

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

Programozási technológia

Alkalmazásfejlesztési technológia. Vizsgakövetelmények. 1. Megjelenítési technikák. Magasabb szintű komponensek. Feladat - RendererTeszt

Programozási technológia

Swing GUI készítése NetBeans IDE segítségével

Java felhasználói felület

OOP: Java 8.Gy: Abstract osztályok, interfészek

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java Programozás 8. Gy: Java alapok. Adatkezelő 4.rész

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Java Programozás 7. Gy: Java alapok. Adatkezelő 3.rész

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

A Java nyelv. Dialógus ablakok. Elek Tibor

Access adatbázis elérése OLE DB-n keresztül

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

A feladatok megoldásához felhasználandó osztályok leírásait az alábbi URL-en találja meg:

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

ZH mintapélda. Feladat. Felület

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

Java Programozás 11. Ea: MVC modell

Programozási nyelvek Java

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

és az instanceof operátor

Swing. (A javax.swing csomag)

Java programozási nyelv 5. rész Osztályok III.

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Abstract osztályok és interface-ek. 7-dik gyakorlat

OOP: Java 8.Gy: Gyakorlás

OOP #14 (referencia-elv)

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven III.

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Programozási technológia

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Java felhasználói felület

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

munkafüzet open eseményéhez

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Java felhasználói felület

Java felhasználói felület

eseményvezérelt megoldások Vizuális programozás 5. előadás

JavaServer Pages (JSP) (folytatás)

Felhasználói útmutató a portal.nakvi.hu oldalhoz

Collections. Összetett adatstruktúrák

C#, OOP. Osztályok tervezése C#-ban

JAVA SE/ME tanfolyam tematika

INFORMATIKAI ALAPISMERETEK

Objektumok inicializálása

Generikus osztályok, gyűjtemények és algoritmusok

Entity Framework alapú adatbáziselérés 2

Generikus Típusok, Kollekciók

Osztályok. 4. gyakorlat

Thermo1 Graph. Felhasználói segédlet

BME MOGI Gépészeti informatika 7.

.Net adatstruktúrák. Készítette: Major Péter

C# osztályok. Krizsán Zoltán

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

BME MOGI Gépészeti informatika 8.

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

VEGA ÚJ FUNKCIÓK. 1 Karton áthelyezés a Vegában. 1.1 Követelmények, megszorítások. VEGA v LeloSoft Kft.

OOP: Java 4.Gy: Java osztályok

Programozás BMEKOKAA146. Dr. Bécsi Tamás 10. Előadás

Programozási technológia

Objektumorientált programozás C# nyelven

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Objektumorientált programozás C# nyelven

Szoftvertechnolo gia gyakorlat

Táblázatkezelés, Diagramkészítés. Egyéb műveletek

Óranyilvántartás (NEPTUN)

A SatAlarm AVA alkalmazás használata

ABAP dictionary objektumok SAP adatmodell Táblák kezelése. Az SAP programozása 1. Tarcsi Ádám

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Választó lekérdezés létrehozása

Concurrency in Swing

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

Elemi alkalmazások fejlesztése III.

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++ 2D tömb: Java versus C++ 2D tömb: Java.

GenerikusOsztály<objektumtípus> objektum = new GenerikusOsztály<objektumtípus>();

Segítség a megoldáshoz: 1. Készítse el a Window-t az ábrának és az osztálydiagramnak megfelelően.

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

JAVA PROGRAMOZÁS 3.ELŐADÁS

TANSZÉKI ADMINISZTRÁTORI SEGÉDLET: NEPTUN TÁRGYKEZELÉS, KURZUSKEZELÉS

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Átírás:

Java felhasználói felület Listák. Egyebek Elek Tibor

JList Szerep: Egy vagy több elem kiválasztása véges számú (2-100) elemből. Fontosabb tudnivalók: - Lista elemek kezelése: ListModel - Kiválasztás kezelése: SelectionModel - Elem megjelenítés kezelése: CellRenderer - Lista elemek elrendezése, scrollozás

JList Lista elemek kezelése ListModel interface-t implementáló osztály. Létezik - nem módosítható (nem lehet új elem, elem törlése, lecserélése) - módosítható (lehet új elem, stb.) Model létrehozása: 1. JList konstruktor JList(Object[] ): létrejön egy nem módosítható JList(Vector<> ): létrejön egy nem módosítható

JList Lista elemek kezelése Model létrehozása: 2. DefaultListModel használata: módosítható DefaultListModel a = new DefaultListModel(); JList lst = new JList(a); vagy JList lst = new JList(); lst.setmodel(a); 3. saját model létrehozása: Implementálva a ListModel interface-t vagy leszármaztatva az AbstractListModel-ből vagy DefaultListModel-ből.

JList Lista elemek kezelése ListModel funkciói: Object getelementat(int index) int getsize() void addlistdatalistener(listdatalistener l) DefaultListModel funkciói: (mint Vector) get, add, addelement, remove, set, indexof, stb.

JList Kiválasztás kezelése ListSelectionModel interface: Lehetséges: - Egy elem kiválasztás - Egy folytonos tartomány kiválasztás - Több tartomány kiválasztás Műveletei: Kiválasztási mód beállítása, lekérdezése, kiválasztott elemek lekérdezése, indexeinek lekérdezése, kiválasztás egyet, kiválasztás többet, kiválasztás változás eseményfigyelő bejegyzése. A műveletek többsége elérhető JList-ből is.

JList Kiválasztás kezelése Létrehozás: - DefaultListSelectionModel használata: alapból ezt használja. - Saját model létrehozása, majd setselectionmodel(listselectionmodel )

JList Kiválasztás kezelése JList-ből elérhető funkciók: get(set)selectedindex(), get(set)selectedvalue(), get(set)selectedindices(), isselectedindex(), clearselection(), isselectionempty(), addlistselectionlistener(), stb.

JList Elem megjelenítés kezelése: CellRenderer Az elemek megjelenítéséhez a ListCellRenderer interface egy implementációját használja. 1. DefaultListCellRenderer az alapértelmezett: - egy JLabel leszármazott - tudja szöveg, kép lista elem megjelenítését, a többihez az objektum tostring()-jét használja. - lehetséges lekérdezni és beállítani DefaultListCellRenderer cr = (DefaultListCellRenderer)lstFix2.getCellRenderer(); cr.sethorizontalalignment(jlabel.right);

JList Elem megjelenítés kezelése: CellRenderer 2. Saját: Implementálni a ListCellRenderer-t. Például: sorszámozott elemek és más kijelölt szín private class MyCellRenderer extends JLabel implements ListCellRenderer { public MyCellRenderer() { setopaque(true);} public Component getlistcellrenderercomponent( JList list, Object value, int index, boolean isselected, boolean cellhasfocus) { String szoveg = index + : + value.tostring(); settext(szoveg); Color foreground; if (isselected) { foreground = Color.YELLOW;} else { foreground = Color.BLACK;}; setforeground(foreground); return this; }}

JList Lista elemek elrendezése, scrollozás get(set)layoutorientation() get(set)visiblerowcount() Scrollozáshoz JScrollPane! ensureindexisvisible()

JList Példa - lista String[] elemekkel, scrollpane nélkül - lista String[] elemekkel scrollpane-ben, a DefaultCellRenderer beállításával, kijelölés változás figyeléssel - lista elem hozzáadás, törlés - lista Szemely listaelemekkel, DefaultListCellRenderer-el - lista Szemely listaelemekkel, saját CellRenderer-el

JComboBox Szerep: Helytakarékos egy kiválasztásos JList vagy helytakarékos egykiválasztásos JList plussz JTextField Fontosak: - Model - CellRenderer - Editor

JComboBox Model: data + selection modell együtt 1. ComboBoxModel: ListModel leszármazott get(set)selecteditem() 2. MutableComboBoxModel: ComboBoxModel leszármazott. (addelement(), insertelementat(), removeelement(), removeelementat()) 3. DefaultComboBoxModel: MutableComboBoxModel implementáció JComboBox-ból elérhető modell funkciók: additem, removeitem, getitemat, stb.

JComboBox CellRenderer: Ua. mint JList Események: additemlistener() : kijelölt elem megváltozásakor, két ItemEvent: deselect, select addactionlistener() : kijelölt elem megváltozásával, valamint editálás befejeztével

JComboBox Editor rész: Megjelenítés, szerkesztés. Csak akkor használja, ha a ComboBox editable get(set)editable(): alapból false 1. BasicComboBoxEditor: JTextField-et használ. - a text mező lekérdezhető és beállítható 2. Saját: - leszármaztatni a BasicComboBoxEditor-ból (csak akkor célszerű, ha JTextField leszármazott editor-t akarok), - implementálni a ComboBoxEditor interface-t

JComboBox Példa: - Editálható combo, action és item eseményekkel - Editálható combo, az editort lekérdezve és hozzáadva egy DocumentFilter-t - Editálható combo, az editor saját BasicComboBoxEditor leszármazott - Editálható combo, saját JFormattedTextField-et használó editorral

JSpinner Szerep: A JComboBox-hoz nagyon hasonló, csak nem legördíthető. Azaz kiválasztás elemekből vagy szerkesztés. Adatmodellek: saját vagy SpinnerNumberModel: nem felsorolt elemek, hanem min, max, lépés, aktuális érték SpinnerDateModel: nem felsorolt elemek, hanem start, end, lépésmező, aktuális érték SpinnerListModel: felsorolt elemek (Object[] vagy List<>)

JSpinner Editor rész: saját vagy DefaultEditor: egy egyszerű általános megvalósítás, JFormattedTextField-et használ, de nem editálható NumberEditor: SpinnerNumberModel esetén, JFormattedTextField a megadott DecimalFormat-tal DateEditor: SpinnerDateModel esetén, JFormattedTextField a megadott SimpleDateFormat-tal ListEditor: SpinnerListModel esetén, JFormattedTextField

JSlider Szerep: Numerikus érték megadása csúszkán Modell: BoundedRangeModel, DefaultBoundedRangeModel Főbb funkciók: get(set)value() get(set)minimum(), get(set)maximum() get(set)extent() Események: addchangelistener() get(set)valueisadjusting(): Slider húzás több esemény-e

JSlider Főbb funkciók: Kinézet: get(set)orientation(), get(set)inverted() Vonalkázás: get(set)paintticks(), get(set)minortickspacing(), get(set)majortickspaceing() Feliratozás: get(set)paintlabels(), get(set)labeltable(),(hashtable) createstandardlabels()

Gyakorlat Hozzunk létre egy űrlapot, amelyen van egy lista egy text mező és két gomb. Az egyik gomb hatására a lista elemekhez hozzáadja a text mező tartalmát. A másik gomb hatására kitörli a listából a kijelölt elemeket. Legyen még két gomb, amellyel mozgathatjuk az első kijelölt elemet a listában le, fel. Változtassuk meg a cellrenderer beállításait úgy, hogy jobbra igazítson.

Gyakorlat Rakjon ki egy módosítható JComboBox-t tetszőleges elemekkel és egy textarea-t. Készítsen egy item eseménykezelőt, amely a textarea-ba írja at esemény adatait: item esemény: itemnév Selected Deselected alakban Készítsen egy action eseménykezelőt, amely a textarea-ba írja az esemény adatait action esemény: kiválasztottitem Figyelje meg milyen események keletkeznek elem kiválasztásakor, új elem begépelésekor, illetve a kiválasztott elem kódból történő megváltoztatásakor (egy gomb amelynek hatására megváltoztatja a kiválasztott elemet).

Gyakorlat Készítsen egy űrlapot, amelyen egy árú nevét, darabszámát (JSpinner), lejárati dátumát (JSpinner), Valami (JSlider, 10-20 közötti egész szám) lehet megadni. Legyen egy gomb, amelynek hatására a kitöltött adatokat kiírja a konzolra.

JTree Szerep: Hierarchikus adatok kijelzése, kezelése (pl. fastruktúra, szervezeti egység struktúra) Adat modell TreeModel interface: csomópontok Object-ek root elem lekérdezés, egy szülő gyerekeinek lekérdezése, változás figyelő DefaultTreeModel: csomópontok TreeNode-ok

JTree Csomópontok: TreeNode interface: szülö, gyerekeklistája, egy adott gyerek, gyerekek száma, stb. MutableTreeNode interface: gyermek beszúrás, törlés, áthelyezés, UserObject DefaultMutableTreeNode: pl. szülő, gyermek, testvér, útvonal kezelés, UserObject Konstruktor param: UserObject, lehet-e gyereke

JTree DefaultTreeModel használata 1. root node létrehozása DefaultMutableTreeNode root = new DefaultMutableTreeNode( Egységek ); 2. Gyerekei és azok gyerekei létrehozás gy1 = new DefaultMutableTreeNode(new Egyseg( gyar1, EgysegFajta.GYAR)); u1 = new DefaultMutableTreeNode(new Egyseg( uzem1, EgysegFajta.UZEM)); gy1.add(u1); u2 = new DefaultMutableTreeNode(new Egyseg( uzem2, EgysegFajta.UZEM)); gy1.add(u2); root.add(gy1);

JTree DefaultTreeModel használata 3. modell létrehozása és hozzárendelése JTree tree = new JTree(root); vagy DefaultTreeModel dtm = new DefaultTreeModel(root); JTree tree = new JTree(dtm); vagy DefaultTreeModel dtm = new DefaultTreeModel(root); JTree tree = new JTree(); tree.setmodel(dtm);

JTree JTree.DynamicUtilTreeNode Segéd osztály, amely legenerálja a csomópontokat egy gyűjteményből vagy tömbből. Hashtable<Object, Object> hashtable = new Hashtable<Object, Object>(); hashtable.put("a", new String[] { "a", "b" }); Hashtable<Object, Object> inner = new Hashtable<Object, Object>(); inner.put("i1", "i2"); inner.put("i2", new String[] {"i21", "i22"}); hashtable.put("b", inner); DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); JTree.DynamicUtilTreeNode.createChildren(root, hashtable);

JTree CellRenderer model TreeCellRenderer interface DefaultTreeCellRenderer: JLabel leszármazott, open icon, closed icon, leaf icon, background color, selection background color, text color, selection text color, font Alapból a userobject tostring-je a szöveg. Meglévő cell renderer beállítás: DefaultTreeCellRenderer dcr = (DefaultTreeCellRenderer)tre.getCellRenderer(); dcr.setbackgroundselectioncolor(color.magenta)

JTree CellEditor model: Az editor megjelenik, ha a JTree editable és tripla klikk a csomóponton. Ha nincs megadott CellEditor, akkor DefaultTreeCellEditor DefaultTreeCellEditor.DefaultTextField-el. TreeCellEditor interface DefaultCellEditor: checkbox, combobox, textfield DefaultTreeCellEditor: megadott TreeCellEditor-ral vagy saját default-tal.

JTree CellEditor példa: combobox editor 1. combobox létrehozása: String el[] = { "A", "B", "C", "D" }; JComboBox cmb = new JComboBox(el); cmb.seteditable(true); 2. editor létrehozása TreeCellEditor cmbed = new DefaultCellEditor(comboBox); 3. treecelleditor létrehozása változatlan rendererrel DefaultTreeCellRenderer renderer = DefaultTreeCellRenderer)tree.getCellRenderer(); DefaultTreeCellEditor editor = new DefaultTreeCellEditor(tree, renderer, cmbed);

JTree CellEditor példa: combobox editor 4. hozzárendelés a tree-hez tree.setcelleditor(editor); JTree editorral kapcsolatos funkciói: TreePath geteditingpath() void starteditingatpath(treepath) void stopediting() get(set)celleditor()

JTree TreePath Egy csomóponthoz vezető objektumokat reprezentálja. Funkciók: Object[] getpath(), TreePath getparentpath(), Object getpathcomponent(int index), Object getlastpathcomponent(), int getpathcount(), boolean isdescendant(treepath)

JTree Selection modell Csomópontok kiválasztási modell-je. TreeSelectionModel interface DefaultTreeSelectionModel: Lehetővé teszi egy kiválasztást, folytonos több kiválasztást, több kiválasztást. tree.getselectionmodel().setselectionmode( DefaultTreeSelectionModel.SINGLE_TREE_SELECTION);

JTree Selection modell A funkciók többsége megtalálható a JTree-ben is. Fontosabb funkciók: TreePath getselectionpath() void setselectionpath(treepath) TreePath[] getselectionpaths() void setselectionspaths(treepath[]) Object getlastselectedpathcomponent(): ua. mint getselectionpath().getlastpathcomponent() getleadselectionpath(): előzőleg kijelölt Illetve csak a JTree-ben: void addtreeselectionlistener(treeselectionlistener)

JTree Expand, collapse expandpath(), collapsepath(), scrollpathtovisible(), get(set)toggleclickcount(), addtreeexpansionlistener(), addtreewillexpandlistener()

JTree Kinézet: setrootvisible() setshowsroothandles() setscrollsonexpand() putclientproperty("jtree.linestyle", "Angled"); vagy Horizontal, vagy None

Gyakorlat Készítsen egy űrlapot, amelyen egy JTree és két gomb (felvitel, törlés). Felvitelkor a kiválasztott node alá kell felvenni egy új feliratú node-t. Törölni csak ha nincs gyereke. A kiválasztás módosulásakor állítsa a gombok engedélyezettségét, azaz legyen letiltva a törlés, ha van gyereke a kiválasztott node-nak, illetve legyen letiltva mind, ha nincs kiválasztva semmi.