将嵌套对象属性绑定到JavaFx中的TableView

前端之家收集整理的这篇文章主要介绍了将嵌套对象属性绑定到JavaFx中的TableView前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有下一堂课
public class ProductStockDto extends 

    private Long id;
    private Long amount;
    private ProductDto product;
    private StockDto stock;

    //getters and setters...
}

在JavaFx中我有我的表,我想将product.name属性绑定到列,就像这样.

ObservableList<ProductStockDto> data = FXCollections.observableArrayList();
data.addAll(products);
nameColumn.setCellValueFactory(new PropertyValueFactory("product.name"));
productTable.setItems(data);

但是当我这样做时,TableView上的行显示为空白.

有人可以帮我这个吗?我想绑定嵌套对象属性,在Java Swing上就像是${product.name}

谢谢.

解决方法

Javafx不支持这种格式,作为一种解决方法,您可以尝试这样的方法
nameColumn.setCellValueFactory(new Callback<CellDataFeatures<ProductStockDto,String>,ObservableValue<String>>() {  
    @Override  
    public ObservableValue<String> call(CellDataFeatures<ProductStockDto,String> data){  
         return data.getValue().getProducts().nameProperty();  
    }  
});

ProductDto将拥有的地方

public class ProductDto{

    private StringProperty name = new SimpleStringProperty("Itachi");

    public String getName() {
        return name.get();
    }

    public void setStreet(String name) {
        this.name.set(name);
    }

    public StringProperty nameProperty(){
        return name;
    }
}
原文链接:https://www.f2er.com/java/129838.html

猜你在找的Java相关文章