Динамически обновлять стиль строки javaFX - PullRequest
0 голосов
/ 07 декабря 2018

Предположим, у вас есть 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), изменяя статус какого-либо продукта на доступный, когда таблица уже отображается, строка не меняет своюстиль!Вы можете мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...