![](/img/trans.png)
[英]Accessing nested properties in JavaFx TableView / TableColumn
[英]JavaFX TableColumn with nested Bean
我需要在TableView
上顯示像這樣的嵌套bean的列:
public class A_Bean {
private ObjectProperty<BigDecimal> id;
private B_Bean qwerty;
}
public class B_Bean {
private ObjectProperty<BigDecimal> id;
private StringProperty qwerty_B;
}
所有的bean類都有get,set和property方法。 我的問題是A_Bean
具有B_Bean
類型的變量,我不知道如何告訴tableColumn
它必須顯示qwerty_B
字段,而不是B_Bean
的qwerty
變量的A_Bean
。
@FXML
private TableView<A_Bean> myTable;
@FXML
private TableColumn<A_Bean, BigDecimal> idColumn;
@FXML
private TableColumn<A_Bean, B_Bean> qwertyColumn;
.....
@FXML
private void initialize() {
idColumn.setCellValueFactory(cellData -> cellData.getValue().idProperty() );
qwertyColumn.setCellValueFactory(cellData -> cellData.getValue().qwertyProperty() );
.....
}
public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;
myTable.setItems(mainApp.getA_BeanData());
}
如果運行我的代碼,我會在tableColumn
上看到類似xx.B_Bean@1234dasf23
我需要告訴tableColumn
它必須從A_Bean
獲取qwerty_B
字段。 我怎樣才能做到這一點?
只需使用單元格工廠告訴單元格如何顯示其包含的B_Bean
作為其值即可:
qwertyColumn.setCellFactory(tc -> new TableCell<A_Bean, B_Bean>() {
@Override
protected void updateItem(B_Bean item, boolean empty) {
super.updateItem(item, empty);
setText(empty ? null : item.getQwerty_B());
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.