Bind nested object properties to tableview in JavaFX
•
Java
I have the next class
public class ProductStockDto extends private Long id; private Long amount; private ProductDto product; private StockDto stock; //getters and setters... }
In JavaFX, I have my table, and I want to add product The name attribute is bound to the column, like this
ObservableList<ProductStockDto> data = FXCollections.observableArrayList(); data.addAll(products); nameColumn.setCellValueFactory(new PropertyValueFactory("product.name")); productTable.setItems(data);
But when I do, the rows on the tableview appear blank
Can someone help me with this? I want to bind nested object properties, which is like ${product. Name} on Java swing
thank you.
Solution
JavaFX does not support this format. As a solution, you can try this method:
nameColumn.setCellValueFactory(new Callback<CellDataFeatures<ProductStockDto,String>,ObservableValue<String>>() { @Override public ObservableValue<String> call(CellDataFeatures<ProductStockDto,String> data){ return data.getValue().getProducts().nameproperty(); } });
Where productdto will own
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; } }
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码