CellFactory funktioniert nicht korrekt

jimb0p

Erfahrenes Mitglied
Hallo Zusammen,

habe einen TableView innerhalb eines ScrollPane indem eine Spalte Sale enthalten ist. Wenn hier der Wert > 0 ist möchte ich dass die Zelle rot angezeigt wird. Mit meiner CellFactory funktioniert es auch. Jedoch wenn ich anfange zu scrollen, dann sind auch Zellen rot die keine Salepreis haben. Das komische ist, es sind genau die gleichen Positionen wie vor dem Scrollen. Muss ich hier noch irgendwas neu zeichnen lassen oder so? Hier ist meine CellFactory:

Java:
clmnSale.setCellFactory(column -> {
            return new TableCell<Artikel, Number>(){
                @Override
                protected void updateItem(Number item, boolean empty){
                    super.updateItem(item, empty);
                    if(item != null){
                        float price = (float) item;
                        if(price > 0.0f){
                            setText(String.valueOf(item));
                            setStyle("-fx-background-color: red");
                        }else{
                            setText(String.valueOf(item));
                        }
                    }
                }
            };
        });
 
Ich musste die vorherige Formatierung einfach entfernen:
Java:
final String CSS_SALE = "sale";
      
        clmnSale.setCellFactory(column -> {
            return new TableCell<Artikel, Number>(){
                @Override
                protected void updateItem(Number item, boolean empty){
                    super.updateItem(item, empty);
                    getStyleClass().removeAll(CSS_SALE);
                    if(item != null){
                        float price = (float) item;
                        if(price > 0.0f){
                            setText(String.valueOf(item));
                            getStyleClass().add("sale");
                        }else{
                            setText(String.valueOf(item));
                        }
                    }
                }
            };
        });

die Styles kommen aus einer .css Datei
 
Zurück