我遇到了一个奇怪的问题,似乎无法解决。我正在做一个表格视图,其中一栏里面有一个复选框。

虽然我试图将更改侦听器添加到CheckBoxTableCell,但是没有任何运气。

如果我这样做:

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


该复选框完全不显示在表格视图上。

但是,如果我这样做:

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


复选框显示正常吗?为什么第二个显示复选框,而第一个没有显示?请帮忙!

最佳答案

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

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

10-07 21:03