动态更新行样式javaFX

时间:2018-12-07 17:38:21

标签: javafx

假设您有一个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");

                        }
                    }

                }
            };
        }

    });

问题是,如果我已经通过显示表时将某些产品的状态更改为可用来更新模型(可观察列表),则该行不会更改其样式!你能帮我吗?

0 个答案:

没有答案