来自http://docs.oracle.com/javafx/2/api/javafx/scene/control/Cell.html:
"Cell API用于ListView,TreeView和TableView等虚拟化控件.Cell是Labeled控件,用于在ListView,TreeView或TableView中呈现单个"行".
他们为什么要虚拟化?
如果要在Control
诸如a中显示大量数据ListView
,则需要某种方式来虚拟化Nodes
创建和使用的数据.否则会影响内存占用,从而影响时间.
例如,如果您有1000万个数据项,则不希望创建1000万个节点.因此,您可以创建足够的节点以动态填充显示,并在用户滚动ListView
控件时重复使用它们.
来自文档:
由于TreeView,ListView,TableView和其他此类控件可能会用于显示难以置信的大量数据,因此无法为控件中的每个项创建实际的Cell.我们仅使用非常少的Cell来表示极大的数据集.每个Cell都被"回收"或重复使用.当我们说这些控件是虚拟化时,这就是我们的意思.
PS:每个框架都有这种虚拟化,无论是Android,WPF,JavaFX等.
来自JavaFX的一位开发人员:http: //fxexperience.com/2009/09/ui-virtualization/