kategória | ||||||||||
| ||||||||||
| ||
|
||||||||||
A grafikus felhasználói felületel létrehozásához szükséges osztályokat és interfészeket a java.awt csomag tartalmazza. Nevét az AWT (Abstract Window Toolkit - absztrakt ablakozó k 838f54i észlet) rövidítéséböl kapta, ahol az absztrakt jelzö arra utal, hogy a felületelemek megjelenítéséért nem a Java virtuális gép, hanem az operációs rendszer grafikus ablakozó rendszere a felelös. Ennek hátránya, hogy emiatt a felhasználható grafikus komponensek száma kevés, és a komponensek tényleges kinézete az operációs rendszertöl függ. Ezen problémák kiküszöbölésére szolgál a Swing nevü grafikus programkönyvtár, amely a javax.swing csomagban található. A Swing komponensek az AWT komponensekre épülnek, de kizárólag Javában íródtak, és önmaguk gondoskodnak a saját megjelenítésüktöl, ezáltal függetlenek az operációs rendszertöl. Ezáltal lehetövé vált
komplex grafikus felhasználói elemek megvalósítása,
meglévö komponensek tetszöleges kombinálása, módosítása.
Minden AWT komponenshez megtalálható annak Swing megfelelöje, a Swing komponens neve elött egy J betü van.
A Swing komponensek az adatmodell - megjelenítés - vezérlés (MVC - Model - View - Controller) architektúrát alkalmazzák. Az MVC-nek megfelelöen a grafikus felhasználói felületelemeket logikailag további három funkcionális részre tagolható:
adatmodell: a komponens által megjelenített adatok. A megjelenítés folyamán biztosítja az adatokat a megjelenítö rétegnek
megjelenítés: a komponens adatmodelljében található adatok megjelenítéséért felelös. A felhasználói eseményeket továbbítja a vezérlö rétegnek.
vezérlés: a felhasználói eseményeket feldolgozó programlogika. Az eseményekre reagálva az adatmodell adatait változtatja meg.
A Swing komponensek az MVC egy egyszerüsített változatát használják, ahol csak az adatmodell és a grafikus komponensek vannak szétválasztva. A grafikus komponens ekkor saját maga felelös a megjelenítéséért és a felhasználói események feldolgozásáért. Egy Swing komponens ilyenkor a modell és a grafikus megjelenítés közötti kommunikációt vezérli.
Listák megjelenítésére a JList osztály használható, amely nemcsak szöveget, hanem bármilyen objektumokat tartalmazhat listaelemenként.
Adatmodellje a ListModel, melyet vagy konstruktorban, vagy a setModel illetve a setListData metódussal adunk meg. Ha nem adunk meg adatmodellt, akkor nem lehet a listában adatot tárolni.
A lista legegyszerübb megvalósítása a DefaultListModel leszármazottosztály. Ez a modell a java.util.vector metódusait valósítja meg (a megfelelö figyelöket automatikusan értesítve), azáltal reprezentálja a lista elemeit.
A listaelemek kiválasztásának nyilvántartásáért a ListSelectionModel a felelös, melyet a setSelectionModel metódussal lehet megadni. Ezen interfész csaknem valamennyi metódusát implementálja a komponens.
Az adott indexek zárt intervallumának kiválasztását a setSelectionInterval metódussal lehet megadni (magyarul azt lehet megadni, hogy hányas indexü elemtöl hányas indexü elemig lehet kiválasztani a lista elemei közül).
Az indexek már meglévö kiválasztáshoz hozzávételét az addSelectionInterval metódussal lehet elvégezni.
A kiválasztás törlésére való a clearSelection metódus.
Példa:
// ez azt csinálja, hogy mindig csak a páratlan számokat lehet kiválasztani
// abban az esetben, ha a listában 1-töl egyesével növekszenek az értékek
public void setSelectionInterval (int x, int y)
}
}
A ListSelectionModel interfész legegyszerübb megvalósítása a DefaultListSelectionModel osztály.
Példa:
// maga a vizuális komponens
JList l = new JList();
// a lista adatmodellje
public static DefaultListModel lista=new DefaultListModel();
// a kiválasztás modellje
DefaultListSelectionModel lm=new DefaultListSelectionModel();
// a listánk adatmodellje DefaultListModel
l.setModel(lista);
// a listánk kiválasztási modellje DefaultListSelectionModel
l.setSelectionModel(lm);
A Swing az AWT eseménymodelljét használja. Az eseményeket egy osztályhierarchia kezeli, amelynek gyökere a java.util.EventObject. A Swing eseményeket a javax.swing.event alcsomag tartalmazza. Egy bizonyos típusú eseményhez a gyökérosztály egy neki megfelelö eseménye tartozik. Az események egy forrás objektumból származnak, és egy vagy több fogadó objektumnak adódnak át a fogadó objektum megfelelö metódusának meghívásán keresztül.
A program akkor válik eseményvezéreltté, ha lehetöség van a keletkezett eseményekre való reagálásra. Ennek támogatására való az ún. eseményfigyelö módszer. Ez a következö részekböl áll:
adott esemény egy eseményobjektum ír le, például ActionEvent
adott ActionEvent eseményre figyelö objektumokat az ActionListener interfész reprezentálja
az interfész metódusai a figyelt esemény különbözö típusainak bekövetkeztét, vagy az esemény bekövetkezésének különbözö módjait írják le
ezen metódusok paraméterként kapják az eseményt leíró ActionEvent objektumot
az addActionListener és a removeActionListener metódusok biztosítják minden objektum számára a lehetöséget, hogy az eseményre figyelö objektumok regisztráltathassák magukat, vagy törölhessék a már megtörtént regisztrációt. E két metódus paramétere mindig egy, az esemény figyelésében érdekel objektum.
ha egy esemény bekövetkezik, akkor az esemény forrása értesíti az összes nála regisztrált figyelöt az ActionListener interfész valamely metódusának meghívásával. Paraméterként az aktuális eseményobjektum kerül átadásra. Az értesítési sorrend független a regisztrálási sorrendtöl.
ha egy eseményre reagálni szeretnénk, akkor elöbb implementálni kell a megfelelö eseményfigyelö interfészt, majd regisztráltatni kell az implementáló objektumot az eseményforrásnál. Minden olyan eseményfigyelö interfészhez, amely több metódust is definiál, tartozik egy adapter osztály. Az ActionListener eseményfigyelö interfész adapter-osztálya az ActionAdapter osztály.
az actionPerformed az ActionListener egy metódusa.
Találat: 353