簡體   English   中英

帶有嵌套Bean的JavaFX 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_Beanqwerty變量的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM