JTable Cell-Renderer

8

Ich folge einem Code, den ich gefunden habe (Ja, ich verstehe, wie es funktioniert) Es ist von hier: Code Link

Was ich versuche zu tun ist eine Zellen Vordergrundfarbe, wenn der Zellenwert auf "gelb" gesetzt ist

Hier ist mein Code:

%Vor%

Und der Cell Renderer

%Vor%

Das Problem ist, dass es sich nicht ändert, wenn ich irgendeinen Zellenwert auf "gelb" setze

Vielen Dank im Voraus!

    
Diesal11 11.07.2011, 01:29
quelle

3 Antworten

9

Wird Ihr Renderer jemals überhaupt benutzt? Sie machen es zum Standard-Renderer für Zellen, die String enthalten, aber haben Sie die getColumnClass -Methode Ihres Modells überladen, so dass es weiß, dass einige der Zellen Strings enthalten?

Also würde ich println-Anweisungen verwenden, um zu sehen, ob der Renderer überhaupt aufgerufen wird, und wenn nicht, würde ich die Methode meines Modells wie oben erwähnt außer Kraft setzen.

Bearbeiten 1
Auch Ihre if-Ergebnisse sind bestimmt seltsam. Im if-Teil ändern Sie den forground und im else ändern Sie den Hintergrund - macht keinen Sinn. Sie sollten wahrscheinlich komplementäre Änderungen im Zustand in den if gegenüber den else Blöcken, nicht orthogonalen Änderungen tun.

Bearbeiten 2
Zum Beispiel:

%Vor%     
Hovercraft Full Of Eels 11.07.2011, 01:48
quelle
3

Fügen Sie diese Zeile hinzu:

%Vor%

Die von getTableCellRendererComponent zurückgegebene Komponente muss undurchsichtig sein, damit Änderungen an der Hintergrund- und Vordergrundfarbe angezeigt werden. Das Problem ist hier auch ein anderes: Sie erweitern DefaultTableCellRenderer (das ist eine JComponent), aber Sie geben eine Komponente zurück, die die Methode "SetPoque" nicht definiert hat. Ich würde Ihren Code so umgestalten:

%Vor%     
Heisenbug 11.07.2011 01:32
quelle
1

Hier ist eine einfache Lösung, verwenden Sie TabaleCellRendere als innere Klasse.

%Vor%     
Syed Maruf 13.10.2013 12:02
quelle