Swing JTable - Markieren Sie die ausgewählte Zelle in einer anderen Farbe als der Rest der ausgewählten Zeile?

8

Ich habe eine grundlegende Swing-JTable und die Anforderung ist, dass beim Klicken auf eine beliebige Zelle die gesamte Zeile hervorgehoben werden sollte und dass die Zelle, auf die geklickt wurde, eine andere Farbe haben sollte als der Rest der markierten Zeile.

Momentan habe ich isRowSelectionAllowed als true

Ich habe versucht, einen benutzerdefinierten TableCellRenderer zu verwenden, der wie folgt lautet:

%Vor%

Aber das schien nicht zu funktionieren (ganze Reihe wurde rot markiert).

Ich habe auch versucht, die UIManager-Eigenschaft wie folgt zu setzen:

%Vor%

Aber das scheint auch nicht zu funktionieren (auch wenn ich versucht habe, mit

einen Rahmen zu setzen) %Vor%

das hat gut funktioniert)

Könnten Sie bitte irgendwelche Vorschläge machen, was ich tun muss?

    
Madhavan Kulukkallur 28.07.2011, 16:08
quelle

3 Antworten

10

Versuchen Sie Folgendes:

%Vor%

Dann in der getTableCellRendererComponent

%Vor%

Dadurch wird die ausgewählte Zelle rot, der Rest der Reihe grün und der Rest der Spalte blau dargestellt. Hinweis: Bei der Zellenauswahl muss das Auswahlmodell einzeln sein, andere Auswahlmodelle können zu unvorhersehbarem Verhalten führen.

    
Devon_C_Miller 29.07.2011, 03:27
quelle
4
  

Aber das schien nicht zu funktionieren (ganze Reihe wurde rot markiert).

Sie müssen die Variable "hasFocus" überprüfen, nicht die Variable "isSelected".

Eine weitere Option anstelle mehrerer benutzerdefinierter Renderer zu erstellen (für den Fall, dass Sie in einer Tabelle Spalten mit unterschiedlichen Klassentypen haben) ist die Verwendung der Table Row Rendering Ansatz.

    
camickr 28.07.2011 16:23
quelle
3

Sie müssten die Zeilenauswahl deaktivieren und die Zellenauswahl für die Tabelle aktivieren. Dann finden Sie eine Möglichkeit, zurück zu gehen und die Zeile bei Bedarf hervorzuheben.

    
jzd 28.07.2011 16:14
quelle