在所有的界面控制中,各个对象的相互关系相对比较容易掌握理解。但具体到单元格的控制中,相对来说就有一些细节我们要仔细思考。首先,单元格中的对象的功能在JavaFx不亚于一个窗体,它里面也可以重新布局各种容器、图表等元素,同时,它特殊的地方在于:所有的对像不是一次性创建的,根据官方文档的描述:
因为TreeView, ListView, TableView和其他这样的控件可以潜在地用于显示难以置信的大量数据, * 所以为控件中的每个项目创建一个实际的Cell是不可行的。我们只用很少的cell来表示非常大的数据集。 * 每个细胞都被“回收”或重复使用。这就是我们说这些控件是虚拟化的意思。 * 每当平台确定需要创建新单元时,就会调用单元工厂。例如,也许你的ListView有1000万个项目。 * 制造所有的1000万个单元对象是非常昂贵的。因此,ListView皮肤实现可能只创建刚好适合视觉空间的单元格。 * 如果ListView被调整为更大,系统将决定它需要创建一些额外的单元格。在这种情况下, * 它将调用cellFactory回调函数(如果提供的话)来创建应该使用的Cell实现。如果没有提供单元格工厂, * 则将使用内置的默认实现。 * 单元工厂的实现不仅负责创建cell实例,还负责配置该cell,以便它对其状态的变化做出反应。
所以如果我们要控制某一个单元格中的个性化对象,若是从大的容器控件去引用,有时还是相当有难度的,有种人的世界和蚂蚁的世界那种两个世界