Предположим, у вас есть ObservableList продукта
ObservableList<Product> = FXCollections.observableArrayList();
, где продукт определяется как:
public class Product{
SimpleStringProperty name;
SimpleStringProperty status;
public void setName(String name){
this.name.set(name);
}
public String getName(){
return this.name.get();
}
public SimpleStringProperty nameProperty(){
return name;
}
public void setStatus(String status){
this.status.set(status);
}
public String getStatus(){
return this.status.get();
}
public SimpleStringProperty statusProperty(){
return status;
}}
Для того, чтобы строки моего TableView были выделены жирным шрифтом, если статус «Доступен»я написал эту rowFactory:
mytable.setRowFactory(new Callback<TableView<Product>, TableRow<Product>>() {
@Override
public TableRow<Product> call(TableView<Product> param) {
return new TableRow<Product>() {
@Override
protected void updateItem(Product item, boolean empty) {
super.updateItem(item, empty);
if (item == null) {
setStyle("");
} else {
String status= item.getStatus();
if (!status.equals("Available")) {
setStyle("");
} else {
setStyle("-fx-font-weight: bold");
}
}
}
};
}
});
Проблема в том, что если я обновляю модель (observablelist), изменяя статус какого-либо продукта на доступный, когда таблица уже отображается, строка не меняет своюстиль!Вы можете мне помочь?