Hallo liebes Java-Forum,
Ich habe eine Tableview erstellt. Jede Zeile wird mit den Attributen des dazugehörigen Objektes ("Steckerpin") gefüllt. Um jede Zeile in Abhängigkeit vom "Zustand"-Attribut einzufärben, wurde eine RowFactory verwendet.
Sobald die Tableview gescrolled wird, werden die aufkommenden Zeilen ebenfalls im gleichen oder ähnlichen Muster eingefärbt, obwohl deren "Zustand" sich nicht verändert hat.
Hier zwei Bilder zur Veranschaulichung:

Wenn bis zum Ende der Tabelle gescrollt wird, färben sich die Zeilen wieder weiß.
Hier mein RowFactory-Code:
Ich habe bereits gelesen, dass dieser Fehler mit der Verwendung der RowFactory zusammenhängt, da die Zeilen beim Scrollen wiederverwendet werden und somit wahrscheinlich der "Style" übernommen wird. Jedoch finde ich keine Lösung für mein Problem.
Ich bin dankbar für jede Hilfe.
Ich habe eine Tableview erstellt. Jede Zeile wird mit den Attributen des dazugehörigen Objektes ("Steckerpin") gefüllt. Um jede Zeile in Abhängigkeit vom "Zustand"-Attribut einzufärben, wurde eine RowFactory verwendet.
Sobald die Tableview gescrolled wird, werden die aufkommenden Zeilen ebenfalls im gleichen oder ähnlichen Muster eingefärbt, obwohl deren "Zustand" sich nicht verändert hat.
Hier zwei Bilder zur Veranschaulichung:


Wenn bis zum Ende der Tabelle gescrollt wird, färben sich die Zeilen wieder weiß.
Hier mein RowFactory-Code:
Java:
//Zeilenerzeugung und Einfärben der Zeile in Abhängigkeit der Zustandproperty durch RowFaktory
durchgangsTable.setRowFactory(tv -> new TableRow<Steckerpin>() {
@Override
public void updateItem(Steckerpin item, boolean empty) {
super.updateItem(item, empty);
if (item == null || empty) {
setGraphic(null);
setStyle("");
} else if (item.getZustand().equals(okZustString)) {
pseudoClassStateChanged(PseudoClass.getPseudoClass("ok"), true); //Wenn Steckerpin ok, dann grün
} else if (item.getZustand().equals(fehlerZustString)) {
pseudoClassStateChanged(PseudoClass.getPseudoClass("error"), true); //Wenn Steckerpin fehler,dann rot
} else if (item.getZustand().equals(prüfZustString)) {
pseudoClassStateChanged(PseudoClass.getPseudoClass("pending"), true); //Wenn Steckerpin geprüft wird, dann gelb
}
}
});
Ich habe bereits gelesen, dass dieser Fehler mit der Verwendung der RowFactory zusammenhängt, da die Zeilen beim Scrollen wiederverwendet werden und somit wahrscheinlich der "Style" übernommen wird. Jedoch finde ich keine Lösung für mein Problem.
Ich bin dankbar für jede Hilfe.