如何删除Cell Factories参考

时间:2016-03-09 18:32:30

标签: java javafx callback tablecellrenderer

我有一个允许打开分离窗口的JavaFx应用程序。分离的窗口是从fxml文件加载的。在fxml中有一个包含列的表。当一个窗口关闭时(阶段关闭相当于阶段隐藏)我的窗口控制器对象仍然存活,因为一些与表格单元格相关联的回调引用。 回调与单元格关联如下:

@FXML
private TableColumn<MyModel, Boolean> colImage;
// ...   

colImage.setCellFactory(new Callback<TableColumn<MyModel, Boolean>, TableCell<MyModel, Boolean>>() {
    @Override
    public TableCell<MyModel, Boolean> call(
            final TableColumn<MyModel, Boolean> btnCol) {
        final TableCell<MyModel, Boolean> cell = new TableCell<MyModel,Boolean>() {
            @Override
            public void updateItem(final Boolean ack,
                    final boolean empty) {
                super.updateItem(ack, empty);
                if (ack != null) {
                    if (ack) {
                        final ImageView colIconNew = buildIconImageView(
                                ICON_CHECKED, generalImageLookup);
                        setGraphic(colIconNew);
                    } else {
                        setGraphic(null);
                    }
                } else {
                    setGraphic(null);
                }
            }
        };
        cell.setAlignment(Pos.CENTER);
        return cell;
    }
});

窗口关闭动作后有没有办法删除这些引用?我尝试在关闭操作后设置一个空回调:

colImage.cellFactoryProperty().set(null);

但它没有用。 有什么想法吗?

非常感谢。

0 个答案:

没有答案