2016-06-29 15 views
1

Ich brauche nur ein paar Zeilen mit rotem Text in einer Tabellenansicht, aber kein Ergebnis!javafx tableview Zeile Textfarbe wird nicht mit Pseudo-Klasse geändert

Mein Code:

PseudoClass pClass = PseudoClass.getPseudoClass("warn"); 
myTable.setRowFactory(new Callback<TableView<MyData>, TableRow<MyData>>() { 

        @Override 
        public TableRow<MyData> call(TableView<MyData> param) { 
         return new TableRow<MyData>() { 
          @Override 
          protected void updateItem(MyData item, boolean empty) { 
           super.updateItem(item, empty); 
           if (item == null || empty) { 
            return; 
           } 
           setItem(item); 
           pseudoClassStateChanged(pClass, item.getWarning()); 
          } 
         }; 
        } 
       }); 

Die CSS

.table-view .table-row-cell .text{ 
    -fx-fill: black; 
} 

.table-view .table-row-cell .text:warn{ 
    -fx-fill: red; 
} 

jemand es überprüfen kann oder etwas einfacher Weg vorschlagen?

Antwort

1

Sie setzen die Pseudoklasse auf die TableRow, nicht auf die .text Knoten. Daher muss der Pseudo Wähler mit der Wahl Auswahl der TableRow kombiniert werden, nicht mit dem Wähler das Textelement auswählen:

.table-view .table-row-cell:warn .text { 
+0

Thanks :). Du hast mein Problem gelöst –