JTable: Zeilen abhängig vom Datensatz einfärben

UnkiDunki

Bekanntes Mitglied
Hi,

mir ist natürlich bewusst, dass es schon zig Threads zum Einfärben von Tabellenzeilen gibt und ich selber habe das auch schon entsprechend umgesetzt, allerdings finde ich keinen Thread für mein "spezielles" Problem (wenn es doch schon sowas geben sollte, dann wäre ich sehr dankbar für den Link):

Ich möchte jede Zeile abhängig vom Datensatz einfärben können. In meiner "Datensatzhinzufügemaske" habe ich also einen ColorChooser, aus dem ich mir die drei RGB-Farbwerte zurückgeben lassen und diese dann beim Hinzufügen in drei Integerfelder, die in der DB Teil des Datensatzes sind übergebe.
1. Teilproblem: Datensätze mit zusätzlichen drei Integerwerten zum Einfärben hört sich meiner Meinung nach ziemlich "unglücklich" und nicht nach einer eleganten Lösung an. Das geht bestimmt besser, oder?

2. Teilproblem: Einfärben abhängig eines Spaltenwertes ist für mich kein Problem, aber wie löse ich das, wenn ich das abhängig von drei Werten in unterschiedlichen Columns machen muss? Schon wie oben befürchtet direkt ein Symptom eines Umsetzungdefizites oder doch irgendwie lösbar?

Ein anderer Ansatz wäre die Farbe in z.B. ein einziges Stringfeld zu speichern und das dann im Renderer irgendwie aufzulösen...

Was meint ihr, wie man das geschickt umsetzen könnte. Freue mich über jede Anregung oder wie oben schon erwähnt ein Link zum gleichen Thema :)
 

André Uhres

Top Contributor
Java:
table = new JTable(model) {
    //adapt the column indexes:
    private int RED = 0;//column index of the red color part
    private int GREEN = 1;//column index of the green color part
    private int BLUE = 2;//column index of the blue color part
    {
        //uncomment the following to remove the color columns from the table:
//                columnModel.removeColumn(columnModel.getColumn(BLUE));
//                columnModel.removeColumn(columnModel.getColumn(GREEN));
//                columnModel.removeColumn(columnModel.getColumn(RED));
    }
    @Override
    public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
        Component c = super.prepareRenderer(renderer, row, column);
        int rowM = convertRowIndexToModel(row);
        int red = Integer.valueOf(model.getValueAt(rowM, RED).toString());
        int green = Integer.valueOf(model.getValueAt(rowM, GREEN).toString());
        int blue = Integer.valueOf(model.getValueAt(rowM, BLUE).toString());
        c.setBackground(new Color(red, green, blue));
        return c;
    }
};
 

UnkiDunki

Bekanntes Mitglied
Hi André,

vielen Dank! Das war genau das, was ich gesucht habe und es funktioniert hervorragend.
Eine Frage habe ich dennoch zum Gebrauch:
Neben deinem Beispiel der Implementation bleibt doch nur noch eine Möglichkeit der Umsetzung, nämlich eine eigene Klasse z.B. JColoredTable extends JTable zu schreiben, worin die Methode "prepareRenderer" überschrieben wird. Gibt es da noch eine dritte Variation?

Man kann ja noch z.B. einen DefaultRenderer setzen... Wäre das für diese Aufgabenstellung auch möglich?
 
Zuletzt bearbeitet:

UnkiDunki

Bekanntes Mitglied
Hi,

also ist der DefaultRenderer eher dazu zu gebrauchen, wenn man z.B. Zellen eines bestimmten Datentyps anders darstellen möchte? Man übergibt ja da einen "Zellenrenderer" wie in der FAQ, also
Java:
table.setDefaultRenderer( Color.class, new ColorTableCellRenderer() );
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
Viktim Swing JTable Mit Tab druch Zeilen Wechseln AWT, Swing, JavaFX & SWT 5
P Swing JTable mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 1
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
Bluedaishi JTable alle Zeilen löschen AWT, Swing, JavaFX & SWT 7
O Swing JTable - Zeilen färben (mit Model) AWT, Swing, JavaFX & SWT 13
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
M JTable Zeilen und Zellen einfärben AWT, Swing, JavaFX & SWT 11
M Selektierte Zeilen von JTable AWT, Swing, JavaFX & SWT 10
M JTable Zeilen einfärben AWT, Swing, JavaFX & SWT 13
S Swing JTable Zeilen löschen AWT, Swing, JavaFX & SWT 21
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
B JTable Zeilen und Spalten selektieren AWT, Swing, JavaFX & SWT 5
kniffel Ausgabe von leeren JTable Zeilen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable - Feldtext soll mehrere Zeilen haben AWT, Swing, JavaFX & SWT 3
0 JTable leere Zeilen einfügen AWT, Swing, JavaFX & SWT 3
D JTable mit mehrzeiligen Zeilen AWT, Swing, JavaFX & SWT 5
kodela Swing selektierte Zeilen in JTable AWT, Swing, JavaFX & SWT 3
D Swing JTable: über sichtbare Zeilen iterieren AWT, Swing, JavaFX & SWT 2
A JComboBox-Zeilen in JTable AWT, Swing, JavaFX & SWT 2
B JTable: Zeilen sortieren, aber bestimmte Zeilen fest lassen AWT, Swing, JavaFX & SWT 9
B Swing JTable: mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 3
M JTable - mehrere Zeilen selektieren AWT, Swing, JavaFX & SWT 7
M JTable einzelne Zeilen färben AWT, Swing, JavaFX & SWT 2
A Swing JTable Zeilen einfügen verbieten AWT, Swing, JavaFX & SWT 3
elitebiber Swing Zeilen in einer JTable gruppieren AWT, Swing, JavaFX & SWT 3
O Zeilen in JTable auf Grund eines Wertes einfärben AWT, Swing, JavaFX & SWT 6
R Suchbare Zeilen von JTable in JScrollPane ermitteln AWT, Swing, JavaFX & SWT 9
O JTable Zeilen "nach oben" verschieben AWT, Swing, JavaFX & SWT 3
R Daten in JTable in mehreren Zeilen darstellen AWT, Swing, JavaFX & SWT 11
A Multiple Zeilen in einer JTable Zelle AWT, Swing, JavaFX & SWT 6
F Per KeyListener Zeilen aus JTable löschen AWT, Swing, JavaFX & SWT 9
M JScrollbar + JTable + Zeilen wie in Excel hinzufügen AWT, Swing, JavaFX & SWT 14
S JTable zwei Text-Zeilen in einer Zelle AWT, Swing, JavaFX & SWT 2
Z JTable Zeilen nummerieren AWT, Swing, JavaFX & SWT 2
G JTable mit JTextAreaEditor - Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 4
S Welcher Listener ? In JTable mehrere Zeilen markieren & AWT, Swing, JavaFX & SWT 2
J JTable - Wie Zeilen löschen ? AWT, Swing, JavaFX & SWT 8
A Attribute von Objekten in JTable-Zeilen anzeigen AWT, Swing, JavaFX & SWT 2
E JTable; Zeilen der ersten Spalte definieren? AWT, Swing, JavaFX & SWT 4
A JTable, bestimmte Zeilen blau hinterlegen AWT, Swing, JavaFX & SWT 3
S JTable Makierungen über mehrere Zeilen nicht akzeptieren AWT, Swing, JavaFX & SWT 5
M JTable. Beim löschen der Zeilen Fehlermeldung AWT, Swing, JavaFX & SWT 22
S JTable, mehrere Spalten/Zeilen zeitlich versetzt hinzufügen AWT, Swing, JavaFX & SWT 6
G JTable zur Laufzeit Spalten und Zeilen hinzufügen AWT, Swing, JavaFX & SWT 7
B JTable - Zeilen nachträglich hinzufügen? AWT, Swing, JavaFX & SWT 3
javasdann JTable sichtbare Zeilen innerhalb von JScrollPane ermitteln AWT, Swing, JavaFX & SWT 5
S Im JTable Zeilen ein-/ausblenden AWT, Swing, JavaFX & SWT 6
J Markierte Zeilen in einem JTable AWT, Swing, JavaFX & SWT 3
J JTable-Zeilen mit Werten füllen AWT, Swing, JavaFX & SWT 7
Student JTable - Zeilen und Spalten vertauschen AWT, Swing, JavaFX & SWT 4
W JTable: Zeilen nicht editierbar setzen AWT, Swing, JavaFX & SWT 6
L JTable -> Zeilen hinzufügen AWT, Swing, JavaFX & SWT 9
M JTable - unterschiedliche Hintergrundfarben von Zeilen AWT, Swing, JavaFX & SWT 2
S Zeilen einer JTable verstecken AWT, Swing, JavaFX & SWT 2
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
R Swing JTable und Spaltenausrichtung AWT, Swing, JavaFX & SWT 8
G JTable füllen AWT, Swing, JavaFX & SWT 1
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
J Datensatz in jTable ausgeben AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
M JTable.setDefaultRenderer(...) greift nicht AWT, Swing, JavaFX & SWT 0
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
T Swing JTable valueChanged datensatz löschen AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben