2013-08-30 108 views
3

这是我的问题,我有一个表有50列和10000行,所有的数据都是字符串。在Swing中,当我有一个TableCellRenderer呈现整个表的字符串时。JavaFX TableCell vs Swing TableCellRenderer实例

在JavaFx呈现相同的表我有50000 TableCell对象创建。

我在这里错过了什么吗?这永远不会有任何表现,分配50K的对象是不可接受的。

在JavaFx中有没有一种方法可以使用一个TableCell渲染我所有的单元格并且具有与Swing类似的行为?

回答

5

从Javadoc中Cell类:

因为树视图,ListView中,TableView中和其它这样的控制可以潜在地用于显示令人难以置信的大量数据,这是不可行的创建一个实际的细胞为控制中的每一件物品。我们代表极其庞大的数据集,仅使用极少数的单元格。每个单元都被“回收”或重复使用。这就是我们说这些控件是虚拟化的意思。

基本上,TableView将只创建尽可能多的单元实例,因为它需要在屏幕上呈现内容。如果您滚动表格,单元格会被回收。基本上,这应该给你与Swing相同的性能,交易一个简单的编程模型的小内存开销。

+0

非常感谢,非常感谢。我其实感到很傻。我阅读了单元上的JavaDoc,但这个关键点直到你发布它才打我!谢谢。 –