Hogyan kell beállítani az előadó JTable
Hogyan kell beállítani az előadó JTable?
Nagyon egyszerű. Végre kell hajtani TableSellRenderer felület imeyushih egyetlen módszer:
nyilvános Komponens getTableCellRendererComponent (JTable táblázat, objektum értéke, logikai isSelected, logikai hasFocus, int sor, int oszlop)
Végrehajtását követően a felületen megkapjuk az osztályban, ami le fogja vonni a táblázat celláit. De nem az egész táblát, de csak a típus oszlop a cella, amelyhez állítsuk festő.
Azt viszont például. Dolgozunk az Eclipse.
Sodadim új projekt: File-> New-> Java Project vagy a Fájl-> Új-> Project. és a nyitott ablakban válassza a Java projekt, akkor nyomja meg a Tovább gombra. A projekt neve mezőbe írja MyRendEditTable, Hit a Befejezés gombra.
Kattintson a jobb gombbal a src, a otkyvshemsya menüből válassza ki a New-> Package. a csomag nevét a Név mező beállítása myRendEditTable.table.
Lássuk, mi történt: a jobb osztály TableEx -> Futtatás As -> Java alkalmazás, van:
Táblázatcellák most húzott fogalmazó, meghatározott JTable osztály alapértelmezés szerint. Nem vagyunk teljesen elégedettek. Táblázat szivattyúzás szüksége. Az első oszlop a sorszámok szemben a jobb oldalon, állítsa be őket a központ és változtatni a háttérben. Az oszlop „Number” felhívni a negatív számok piros, ezért elfogadott számviteli. Az utolsó oszlopban prizhmom sor jobb szélén. Miért? Úgy éreztem, mintha. Szintezés után, akkor nem ismeri fel a táblázatban.
Létrehozunk egy osztály előadója, kiterjesztve JLabel, amely felhívja a tartalmát sejteket. Kattintson a jobb gombbal myRendEditTable.table csomagot, válassza a New-> Class, a Név mezőbe írja be IntegerRenderer, ez a mi előadója az első oszlop (sőt az oszlopok számozása nulla, ezért egy nulla oszlop). Class-festő az első oszlop a kód:
Nézzük ezt az osztályt részletesen. Az első módszer szerint
nyilvános Komponens getTableCellRendererComponent (JTable táblázat, objektum értéke, logikai isSelected, logikai hasFocus, int sor, int oszlop)
Az érvek itt: asztal - ez a mi tábla, érték - az adott cella értékét, isSelected - emelte ki a cella, vagy nem, hasFocus - sejt középpontjában, akár nem, sor - számos sejt, hogy felhívjuk, oszlop- oszlopot a cellában.
setHorisontalAlignment eljárás, a sorszámok a központban. SetText módszer megjegyezzük, hogy ha a cella értéke nem szerepel, akkor a szóköz.
Most tekintsünk isSelected és hasFocus. IsSelected == true azt jelenti, hogy a cella van kijelölve, hasFocus == true azt jelenti, hogy a sejt középpontjában. De olyan sejt, amelyben a hangsúly nem ugyanaz elosztása? Igen, ez az. Akkor miért tesz különbséget a fókuszt és selektid? Itt van a dolog itt. Amikor fel a kurzort az asztalra, mind a sejtek, amelyek a saját STORK isSelected tulajdonság igaz, vagyis, isSelected = true. Minden más tábla sejtek isSelected = false. A sejt a kiválasztott sor, ez a kurzor pozícióban van a hangsúly, hogy van, tulajdona hasFocus = true, minden más sejt, ideértve az elszigetelt csatornába, hasFocus = false. A mi osztály, adja meg az előadó, hogyan kell felhívni a számot a kiválasztott cella (isSelected = true), és hogy a kijelölt cella sor, amelyen a kurzor (hasFocus = true). A JTable osztály készült cella egy hangsúly, nyomon követni a vázlatot. Követve ezt a stílust, a hurok módszer setBorder. Állj. Miért mi meg az utat a hangsúly a cella, ha a JTable osztály, és így az ilyen sejteket körülveszi áramkör? Ez egyszerű. Ha már vették a fáradságot, hogy felszerel egy előadó számára bizonyos sejtek, így JTable osztály kizárjuk az összes felelősséget a rajz, mindannyiunknak meg kell regisztrálni: nyomon követni a vázlatot, vagy sem, akkor kell egy színes háttérrel, vagy sem, stb
Az első oszlop kezeljük most nem előadója a „szám” oszlopban. Kattintson a jobb gombbal a csomag myRendEditTable.table, válassza ki a New-> Class, a Név mezőbe írja be DoubleRenderer, ez a mi előadója a harmadik oszlop. Class-festő kódját a „Szám” oszlop:
Ebben az osztályban, akkor ellenőrizze az értéket a cella, ha az kevesebb, mint nulla, a színe a vörös. setForeground módszer pontosan meghatározza a szín megadott értékek a cella (és nem a háttérben, ami által meghatározott setBackground).
Most, az utolsó oszlop. Kattintson a jobb gombbal a csomag myRendEditTable.table, válassza ki a New-> Class, a Név mezőbe írja be StringRenderer, ez a mi előadója a harmadik oszlop. Class-festő kódot „Warehouse” oszlop:
Ebben az osztályban meghatározzuk, ha az oszlop szám egyenlő a három (oszlop == 3), majd megnyomja a értéke a cella a jobb széle.
Ezen a ponton, a projekt kell kinéznie:

Rajzoló elkészült, elindultunk asztalunkra mondani róla. Rajzoló készlet oszlopokat. Minden oszlop van egy típusa. Honnan tudod, hogy ez a fickó? A táblázat modell, és van egy osztály TableExModel, vektor vColClass, neki, és kijelentette, típusok, amelyek megfelelnek minden oszlop. Állítsa rajzoló A táblázatban az átlagos előadója az a típus. Írja be az első oszlop (vagy inkább nulla) - Egész. Tedd előadója az egész típusú oszlop:
table.setDefaultRenderer (Integer.class, új IntegerRenderer ());
Most az oszlop „Number” lesz nyomon követhető, hogy a fogalmazó. Ügyeljen arra, hogy a finomságok. Nekünk csak egy oszlopon Integer, és ha lett volna más? Aztán volna levonni a fogalmazó. Ez nem mindig kényelmes. De már tudod, hogyan lehet megkerülni ezt a nehézséget, nem igaz? Igen, ez igaz. Van kétféle string oszlopban. Úgy döntöttünk értékek az utolsó oszlopban a jobb oldalon a sajtó, de a „Név”, és az ő karakterlánc típusú, akkor meg kell nyomni a bal oldalon. Ezért az osztályban StringRenderer rámutattunk arra, hogy a jobb Shift deysviya egyetlen szám három oszlop:
Felhívom a figyelmet, hogy nem csak az utolsó oszlop felhívjuk a fogalmazó StringRenderer, de a „Név” oszlop, mert ő is az a String. Újra. Rajzoló meghatározott típusú, és ha az oszlopot ilyen kevés, a díszlettervező aktív minden oszlopai az ilyen típusú. Kényszeríteni oszlopon azonos típusú levonandó másképp előírja, hogy, például, ha a (oszlop == 3), készít-so, és mások-so.
TableEx () konstruktor, változtassa meg a kódot az alábbiak szerint:
Ezek a vonalak, hoztunk létre a fogalmazók számára oszlopai String, Double, Integer:
Így a táblázat átesett óriási szivattyúzás. Készen állsz, hogy az eredmény? Kattintson a jobb gombbal az ikonra TableEx osztály -> Futtatás As -> Java alkalmazás:
Döntetlen tapasztalat. Kattintson duplán a 18.8 és postavte mínusz előtte. Nyomja meg az Entert. Száma -18,8 elvörösödött. Kattintson a képre egyszer balra 120,0. Az egész sorozat van jelölve, az összes sejt a sorozat inkább isSelected = true, és a cella értéke 120,0, ami most véget ért, már hasFocus = true. Vázlatos körül a sejtet 120,0 látott? Nem hiába próbáltuk.