Táblára fel! |
A
különböző programok grafikai felületeinek programban való implementálása
nem egyszerű, főleg, ha nincs kéznél valamilyen grafikus
fejlesztői felület (API). Nincs ez másként akkor sem, ha Java nyelven
akarunk grafikus kezelői felületet (GUI) megjeleníteni, elhelyezni.
Ennek megkönnyítésére szolgál a TableLayout
elrendezés-kezelő (LayoutManager).
A beépített (SDK-val szállított) Java-s elrendezés-kezelők
használata egyszerűnek tűnik, de sokszor nem a kívánt eredményt
adják, amikor programunk különböző grafikus elemeit szeretnénk
megjeleníteni az általunk elképzelt pozícióban. A feladat nehezedik, ha az
ablak, amiben a grafikus elemeket elhelyeztük átméretezhető, mivel ekkor
az átméretezett ablak új méreteinek megfelelően kell felrakni az
objektumokat. A beépített LayoutManager-ek valamennyit enyhítenek a problémánkon,
de sajnos ezek használata sem a kívánt eredményt adja minden esetben,
ráadásul a kezdő programozók számára nehézkes a használatuk. Ezek közül BorderLayout és a FlowLayout
használata általában használható eredményt adnak, de nem nagyon
népszerű, mivel használatuk komplikált és nehezen kitalálható eredményt
ad.
Mint ahogy a példán
látszik, elemeket tartalmaz 3 sorban és 2 oszlopban és ezen elemek teljesen kitöltik a rendelkezésre álló területet. Ilyenfajta
elrendezés létrehozása talán a legegyszerűbb a TL segítségével. Egyszerűen
beállítjuk, hogy hány sora, és hány oszlopa legyen a táblázatunknak, és az
elemeket egyszerűen hozzáadjuk - balról jobbra haladva soronként. Álljon
az előző példához itt egy minta: TableLayout tableLayout; Panel panel
= new Panel(); tableLayout = new TableLayout(3, 2); panel.add(new
Label("Név:")); panel.add(new
TextField()); panel.add(new
Label("Jelszó:")); panel.add(new
TextField()); panel.add(new
Button("OK")); panel.add(new
Button("Mégse")); panel.setLayout(tableLayout); Amint látjuk az
elrendezés kezelése egészen egyszerű. Kicsit testre szabhatjuk a
dolgokat, mivel a TL-tot elég könnyen lehet
konfigurálni. A cellák között
beállíthatunk hézagokat (gap) mind
függőlegesen, mind vízszintesen. Az alábbi példában a fenti táblázatot 5
pixeles vízszintes, és 4 függőleges hézaggal módosítjuk. tableLayout = new
TableLayout(3, 2, 5, 4); A hézagokon felül
beállíthatjuk az egész táblázat elemeinek elrendezését mind
függőlegesen, mind vízszintesen. Ekkor az egyes cellákban levő
elemek a meghatározott módon kerülnek elrendezésre úgy, hogy nem töltik ki
teljesen a rendelkezésre álló terültet. Az alábbi
értékeket használhatjuk függőleges elrendezésre: TOP, BOTTOM, CENTER, FILL. Ezen értékek
használatakor az elemek felülre, alulra, középre, vannak rendezve, illetve
teljesen kitöltik a területet. Vízszintesen hasonlóan: LEFT, RIGHT, CENTER, FILL használatakor balra,
jobbra, középre, illetve teljesen kitöltve jelennek meg az elemek. Az alábbi
példa a fenti táblázat elemeit vízszintesen balra, függőlegesen középre
rendezi: tableLayout = new TableLayout(3, 2, TableLayout.LEFT, TableLayout.CENTER, 5,
4); A teljes táblázaton
kívül formázhatjuk az egyes sorokat, oszlopokat, sőt, magukat a cellákat
is. Erre szolgál a setRowAlignment(sor, vElrendezés, fElrendezés), setColumnAlignment(oszlop,
vElrendezés, fElrendezés), illetve a setAlignment(sor, oszlop, vElrendezés,
fElrendezés). Táblázatunkat tovább
fűszerezhetjük az egyes sorok és oszlopok méretének relatív megadásával.
Mivel a TL minden sora és oszlopa olyan méretű alapértelmezésben, mint a
legnagyobbé, ezért gyakran lehet szükségünk arra, hogy ezeket a többi
méretétől függően beállíthassuk. Az egyes soroknak és oszlopoknak
beállíthatjuk, hogy százalékban hogy viszonyulnak a többihez. A
következő példa az második oszlop szélességét a többi 150%-ára állítja: tableLayout.setColumnScale(1,
1.50); Ha az oszlopok
és sorok méretének pontosabb beállítására van szükségünk, például tudjuk,
hogy az abban levő elem(ek) magassága ill.
szélessége pontosan mekkora lesz, vagy azt szeretnénk, hogy a sorok, oszlopok
magassága, illetve szélessége pontosan akkora legyen, mint kitaláltuk, akkor
a következő függvényeket használhatjuk: setRowSize(oszlopSzám, magasság), setColumnSize(oszlopSzám, szélesség). A táblázat köré margókat
rakhatunk, ezzel tovább közelíthetünk a kívánt megjelenéshez a setMargins(felsőMargó, balMargó, alsóMargó, jobbMargó) függvénnyel. További
hasznos kiterjesztése a TableLayout-nak a RowLayout, a ColumnLayout és a CellLayout. Az első egy sor,
a második egy oszlop, míg az utolsó egy cella elemeinek elhelyezését teszi
lehetővé. Ezen osztályok megkönnyíthetik a TableLayout-ban történő
elrendezést könnyebb parméterezhetőségük
révén. Ha az itt említett
táblázatos formánál bonyolultabb elrendezésű az ablakunk, akkor ezen az
egyes táblázatok egymásba ágyazásával segíthetünk. Jó munkát a "táblázáshoz"! |
Galiba Péter
|