JTable Hintergrundfarbe einer Zelle ändern

Hallo,

ich habe 2 JTables, die voneinander abhängig sind.
Wenn ich in JTable 1 eine Zeile selektiere will ich dass in JTable 2
die Hintergrundfarbe von z.B. Zelle(1,2) und Zelle(4,6) auf blau springt. Selektiere ich eine neue Zeile in JTable 1, so müssenn natürlich andere Zellen in JTable 2 blau werden und die ehemals blauen sollen wieder die normale Hintergrundfarbe erhalten.

Mein Problem ist nun wie ich gezielt die Hintergrundfarbe einer Zelle
ändern kann.

Für den Aufbau der Tabelle 2 verwende ich einen CellRenderer, der von einem JLabel ableitet. Die Koordinaten der Zelle, deren Hintergrundfabe ich ändern will sind mir bekannt.
Ich brauche also eine Möglichkeit mit Angabe von row/col auf das Object (JLabel) in der Zelle zu zugreifen damit ich die Farbe setzen kann. Aber wie ?
Ich habe auch schon versucht mir eine Referenz auf die Zellen-Labels zu merken um gezielt darauf zugreifen zu können. Leider wird eine Änderung meiner Hintergrundfarbe aber nicht in der Tabelle sichtbar ?

Wahrscheinlich sehe ich mal wieder vor lauter Wald die Bäume nicht :smile:

Danke
Albert

Hallo Albert,

jede Zelle ist erstmal eine Component. Es sollte also eine Methode getComponent(row, column) geben, die Dir die Zelle liefert. Komponenten haben dann setBackground(Color c).

Vergiss nicht, den Hintergrund wieder auf Normal zu setzten.

Gruß

Peter

Hallo,

Schreibe dir eine eigene implementierung TableCellRenderer
( extends JLabel implements TableCellRenderer ) der in der ersten
JTable prüft ob die zelle selektiert ist und dann die hintergrundfarbe
des JLabels ändert.

gruß

peter

Hallo.

Das Problem hatte ich gestern.

Für den Aufbau der Tabelle 2 verwende ich einen CellRenderer,
der von einem JLabel ableitet. Die Koordinaten der Zelle,
deren Hintergrundfabe ich ändern will sind mir bekannt.
Ich brauche also eine Möglichkeit mit Angabe von row/col auf
das Object (JLabel) in der Zelle zu zugreifen damit ich die
Farbe setzen kann. Aber wie ?

Du könntest dir einen CellRenderer schreiben, der im Constructor eine Referenz auf ein Object bekommt, in dem die zu markierenden rows und cols enthalten sind.

Ich habe auch schon versucht mir eine Referenz auf die
Zellen-Labels zu merken um gezielt darauf zugreifen zu
können. Leider wird eine Änderung meiner Hintergrundfarbe aber
nicht in der Tabelle sichtbar ?

Auch ne Möglichkeit. Was mir aufgefallen ist:
Du musst in deinem CellRenderer bei deinem JLabel setOpaque(true) aufrufen. Dann sieht man auch die Hintergrundfarbe, die du gesetzt hast. Scheinbar wird das standardmäßig auf false gesetzt.

Wahrscheinlich sehe ich mal wieder vor lauter Wald die Bäume
nicht :smile:

Passiert wohl jedem mal…

Gruss, Chris