Javafx 未绑定到特定bean属性的TableView列
此解决方案不是最佳解决方案,因为在刷新项目时它不会更新单元格Javafx 未绑定到特定bean属性的TableView列,javafx,tableview,refresh,Javafx,Tableview,Refresh,此解决方案不是最佳解决方案,因为在刷新项目时它不会更新单元格 否则我将如何实现一个不绑定到单个bean属性的列?我是否应该引入另一个已经包含嵌套表的属性?我不这么认为,因为呈现表内容是上述工厂类的任务。我通过引入一个中间bean来解决这个问题,该bean包含构建单元格内容所需的所有属性 TableColumn<A, A> c1; c1.setCellValueFactory(c -> new ReadOnlyObjectWrapper<>(c.getValue()
否则我将如何实现一个不绑定到单个bean属性的列?我是否应该引入另一个已经包含嵌套表的属性?我不这么认为,因为呈现表内容是上述工厂类的任务。我通过引入一个中间bean来解决这个问题,该bean包含构建单元格内容所需的所有属性
TableColumn<A, A> c1;
c1.setCellValueFactory(c -> new ReadOnlyObjectWrapper<>(c.getValue()));
CellFactory implements Callback<TableColumn<A, A>, TableCell<A, A>> {
@Override
public TableCell<A, A> call(final TableColumn<A, A> param) {
return new TableCell<A, A>() {
@Override
protected void updateItem(final A item, final boolean empty) {
super.updateItem(item, empty);
if (empty || this.getTableRow() == null) {
setText(null);
setStyle("");
setGraphic(null);
} else {
TableView nestedTable = buildTable();
setGraphic(nestedTable);
}
}
};
}
}
表c1列;
c1.setCellValueFactory(c->c.cellBeanProperty());
CellFactory实现回调{
@凌驾
公共TableCell调用(最终TableColumn参数){
返回新的TableCell(){
@凌驾
受保护的void updateItem(最终CellBean项,最终布尔值为空){
super.updateItem(项,空);
if(空| | this.getTableRow()==null){
setText(空);
设置样式(“”);
设置图形(空);
}否则{
TableView nestedTable=构建表(项);
设置图形(可嵌套);
}
}
};
}
}
TableColumn<A, A> c1;
c1.setCellValueFactory(c -> new ReadOnlyObjectWrapper<>(c.getValue()));
CellFactory implements Callback<TableColumn<A, A>, TableCell<A, A>> {
@Override
public TableCell<A, A> call(final TableColumn<A, A> param) {
return new TableCell<A, A>() {
@Override
protected void updateItem(final A item, final boolean empty) {
super.updateItem(item, empty);
if (empty || this.getTableRow() == null) {
setText(null);
setStyle("");
setGraphic(null);
} else {
TableView nestedTable = buildTable();
setGraphic(nestedTable);
}
}
};
}
}
TableColumn<A, CellBean> c1;
c1.setCellValueFactory(c -> c.cellBeanProperty()));
CellFactory implements Callback<TableColumn<A, CellBean>, TableCell<A, CellBean>> {
@Override
public TableCell<A, CellBean> call(final TableColumn<A, CellBean> param) {
return new TableCell<A, CellBean>() {
@Override
protected void updateItem(final CellBean item, final boolean empty) {
super.updateItem(item, empty);
if (empty || this.getTableRow() == null) {
setText(null);
setStyle("");
setGraphic(null);
} else {
TableView nestedTable = buildTable(item);
setGraphic(nestedTable);
}
}
};
}
}