我有下一堂课
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; } }