JTable pozadi bunky – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

JTable pozadi bunky – Java – Fórum – Programujte.comJTable pozadi bunky – Java – Fórum – Programujte.com

 

Lukas
~ Anonymní uživatel
301 příspěvků
20. 4. 2011   #1
-
0
-

Ahoj, narazil jsem na problem pri pokusu o prebarveni pozadi bunek u komponenty jTable. Puvodne jsem myslel, ze postaci najit nejakou metodu setBackground, ale to nefunguje. Pak jsem googlil a nasel renderery, jenze se mi nepodarilo pochopit, jak to funguje. Nenasel by se tu nekdo, kdo by mi to obecne objasnil?

Dival jsem se na nejake priklady od oraclu, tam extenduji tridu "DefaultTableCellRenderer". Jenze jsem z toho nepochopil jak to pracuje. Dival jsem se i v knihovne, ale v tech knizkach typu Java bez predchozich znalosti clovek nic nenajde.

Diky za kazdou radu

Nahlásit jako SPAM
IP: 147.229.207.–
nervak0
Věrný člen
20. 4. 2011   #2
-
0
-

Tabulce změníš renderer na vlastní, takže se bude vykreslovat podle něj. Co přesně na tom nechápeš?

Nahlásit jako SPAM
IP: 213.211.51.–
Lukas
~ Anonymní uživatel
301 příspěvků
20. 4. 2011   #3
-
0
-

To nervak : Zajima me, jak to pracuje. Jestli jsem to pochopil spravne, tak jTable ma defaultni renderer, ale ten neumi jednoduse nastavit pozadi vybrane bunky...teda tak to aspon chapu, protoze jinak nevidim duvod, proc by neexistovala konstrukce typu JTable table.setBackground(int row, int column, Color color).
No a tak si musis vytvorit vlastni, jak uz to tak v Jave byva, tak jen rozsirenim jiz existujici tridy DefaultTableCellRenderer.
Tam si vytvoris metodu public Component getTableCellRendererComponent... a do ni umistis svuj kod, ktery definuje zobrazeni, jako treba

 if(isFocus)

setBackground(Color.green);

No a ja nasel priklad tady http://download.oracle.com/javase/tutorial/uiswing/components/table.html , konkretne nechapu tu cast:


public Component getTableCellRendererComponent(
JTable table, Object color,
boolean isSelected, boolean hasFocus,
int row, int column) {
Color newColor = (Color)color;
if (isSelected) setBackground(Color.BLACK);
if (isBordered) {
if (isSelected) {
if (selectedBorder == null) {
selectedBorder = BorderFactory.createMatteBorder(2,5,2,5,
table.getSelectionBackground());
}
setBorder(selectedBorder);
} else {
if (unselectedBorder == null) {
unselectedBorder = BorderFactory.createMatteBorder(2,5,2,5,
table.getBackground());
}
setBorder(unselectedBorder);
}
}

a pozdeji volani
table.setDefaultRenderer(Color.class, new ColorRenderer(true));
.
Proc se predava jako prvni parametr Color.class ?

Nahlásit jako SPAM
IP: 147.229.207.–
liborb
~ Redaktor
+18
Guru
2. 5. 2011   #4
-
0
-

Kdyby existovalo nějaké setBackground pro každou buňku, tak bys vlastně chtěl po jTable, aby si pamatovala nastavení barvy pro každou z nich. Což je maximálně neefektivní neb měnit barvy nebudou všichni, takže je lepší to dělat tak, že si barvy měníš je tam, kde to potřebuješ - render. Prostě ty barvy definuješ ve chvíli (svým programem), kdy jsou potřeba. Což ti to umožňuje je snadno dynamicky měnit.

Nahlásit jako SPAM
IP: 78.80.52.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 25 hostů

Podobná vlákna

JTable filtrovanie — založil otaznik

Hlavička tabulky JTable — založil Honza

Pomoc s komponentou jTable — založil king_2

JTable vypis do souboru — založil roman.jaros

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý