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);
        }
        }
    };
    }
}