JTable - Hintergrundfarbe von Zeilen ändern

Was ist wenn du es so versuchst?

Code:
if(isSelected)
{
      setBackground(table.getSelectionBackground());
      setForeground(table.getSelectionForeground());
} 
else if(isMarked){
    //deine Markierungsfarbe
}
else
{
    //hier auf die Farbe setzen die du willst.
}

MFG

zEriX
 
Hi!

ne, so gehts leider auch nicht.

Muss nochmal fragen: Wenn ich setDefaultTableRenderer(...) aufrufe, dann wird das Objekt (Renderer) das übergeben wird als "Schablone" verwendet. Es wird nicht für jede neue Zelle ein neues Objekt erstellt?
Für jede Zelle der Tabelle wird nun die Methode getTableCellRendererComponent(...) aufgerufen um diese nach den im Renderer festgelegten Attribute zu zeichnen. Das der Methode übergebene Object "obj" ist der Inhalt der jeweiligen Zeile?


Mfg Chriss
 
Hi!

ne, so gehts leider auch nicht.

Muss nochmal fragen: Wenn ich setDefaultTableRenderer(...) aufrufe, dann wird das Objekt (Renderer) das übergeben wird als "Schablone" verwendet. Es wird nicht für jede neue Zelle ein neues Objekt erstellt?
Der Renderer, welcher übergeben wird, ist für die Darstellung der ihm assozierten Klasse zuständig, welche ja mit übergeben wird.
Soll die Tabelle nun (neu) gezeichnet werden, wird automatisch getTableCellRendererComponent(...) für jede Zelle aufgerufen. Diese Methode erstellt ein JLabel erstellt initiert es gemäß den übergebenen Werten. Dabei wird beispielsweise Object obj als Text gesetzt, wenn es den Focus hat, bekommt das Label einen blauen Rahmen, usw..
Das Label wird dann übergeben und schliesslich gezeichnet.

Wie ich es noch genauer erklären soll, weis ich leider nichts.. Allerdings würde ich einen Renderer nichts als Vorlage oder Schablone bezeichnen, sondern als graphische Repräsentation einer Zelle

Ich hab die Diskussion nicht so ganz verfolgt, weis daher nicht so genau, was das Problem ist, aber du musst dein marked auf jedenfall immer am Anfang oder Ende auf false setzen, weil es sonst bei einmal true gesetzt, immer true bleibt.. Oder du deklarierst es als lokale Variable, dann hast du das Problem nicht..


*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Zurück