JavaFX表视图CellValueFactory

时间:2015-09-12 18:54:33

标签: java javafx tableview

我遇到了一个我无法解决的奇怪问题。我正在制作一个表格视图,其中一列中有一个复选框。

虽然我试图向CheckBoxTableCell添加更改侦听器,但没有运气。

如果我这样做:

            final CheckBoxTableCell<Plugin, Boolean> ctCell = new CheckBoxTableCell<>();
        enabled.setCellFactory(p -> ctCell);

桌面视图中的复选框根本没有显示。

但如果我这样做:

enabled.setCellFactory(p -> new CheckBoxTableCell<>());

复选框显示正常吗?为什么第二个显示复选框但第一个不显示?请帮忙!

1 个答案:

答案 0 :(得分:2)

在第一种情况下,您创建一个对象并多次传递它。根据JavaFX场景图文档,节点只能附加到单个父节点,而父节点不能有重复的子节点。

在第二种情况下,每次填充单元格时都会创建一个新对象。这是应该做的,因为该方法需要工厂,换句话说,每个调用都会生成一个新对象的对象。