Swing JTable - Highlight markierte Zelle in einer anderen Farbe vom rest der ausgewählten Zeile?
Habe ich eine grundlegende swing JTable und die Voraussetzung ist, dass durch das klicken auf eine beliebige Zelle, die ganze Zeile sollte hervorgehoben werden, und auch, dass die Zelle, die angeklickt wurde, sollte eine andere Farbe vom rest der markierten Zeile.
Derzeit habe ich isRowSelectionAllowed als wahr
Versuchte ich mit einem custom TableCellRenderer das wie folgt:
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
public static final DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if (isSelected) {
c.setBackground(Color.red);
}
else {
c.setForeground(Color.black);
c.setBackground(Color.white);
}
return c;
}
}
Aber das schien nicht zu funktionieren (gesamte Zeile rot hervorgehoben).
Ich habe auch versucht die Einstellung der UIManager-Eigenschaft wie folgt:
UIManager.put("Table.focusCellBackground",
new javax.swing.plaf.ColorUIResource (Color.red));
Aber das scheint nicht zu funktionieren (obwohl, wenn ich habe versucht, eine Grenze mit
UIManager.put("Table.focusCellHighlightBorder",
new BorderUIResource.LineBorderUIResource(Color.red));
gut geklappt hat)
Könnten Sie bitte geben Sie Anregungen, was ich vielleicht tun müssen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Dann in der
getTableCellRendererComponent
Dann rendert die ausgewählte Zelle in rot, der rest der Zeile in grün, und den rest der Spalte, in blau. Hinweis: Zelle Auswahl erfordert die Auswahl-Modell werden einzelne, andere Auswahl der Modelle kann zu unvorhersehbaren Verhaltensweisen.
isCellSelected
undisRowSelected
, aber scheint nicht zu sein, etwas zu tun.Müssen Sie prüfen, die "hat_fokus" variable, nicht die "isSelected" variable.
Weitere option anstatt mulutiple custom Renderer (wenn Sie die Tabelle hat Spalten von verschiedenen Klassentypen) ist die Verwendung der Tabelle Zeile Renderering Ansatz.
Würden Sie brauchen, um den Zeilen-Auswahl-und Zell-Selektion auf der Tabelle. Dann finden Sie einen Weg, um zurück zu gehen und markieren Sie die Zeile, wenn nötig.