带有嵌套 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 class 都有get、set 和属性 方法。我的问题是 A_Bean
有一个 B_Bean
类型的变量,我不知道如何告诉 tableColumn
它必须显示 [=] 的 qwerty_B
字段14=] 而不是指向 A_Bean
.
的 qwerty
变量的指针
@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());
}
If if 运行 我会在 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());
}
});
我需要在 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 class 都有get、set 和属性 方法。我的问题是 A_Bean
有一个 B_Bean
类型的变量,我不知道如何告诉 tableColumn
它必须显示 [=] 的 qwerty_B
字段14=] 而不是指向 A_Bean
.
qwerty
变量的指针
@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());
}
If if 运行 我会在 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());
}
});