我遇到了一个奇怪的问题,似乎无法解决。我正在做一个表格视图,其中一栏里面有一个复选框。
虽然我试图将更改侦听器添加到CheckBoxTableCell
,但是没有任何运气。
如果我这样做:
final CheckBoxTableCell<Plugin, Boolean> ctCell = new CheckBoxTableCell<>();
enabled.setCellFactory(p -> ctCell);
该复选框完全不显示在表格视图上。
但是,如果我这样做:
enabled.setCellFactory(p -> new CheckBoxTableCell<>());
复选框显示正常吗?为什么第二个显示复选框,而第一个没有显示?请帮忙!
最佳答案
在第一种情况下,您将创建一个对象并将其多次传递。根据JavaFX场景图文档,节点只能附加到单个父节点,并且父节点不能有重复的子节点。
在第二种情况下,每次创建一个新对象来填充单元格。这是应该做的,因为该方法需要工厂,换句话说,一个对象在每次调用时都会产生一个新对象。