这是我的问题,我有一个包含50列和10000行的表,所有数据都是字符串.在Swing中,我有一个TableCellRenderer,它呈现整个表的字符串.
在JavaFx中渲染相同的表我创建了50000个TableCell对象.
我在这里遗失了什么吗?这将永远不会有任何性能,分配50K的对象是不可接受的.
JavaFx中是否有一种方法只使用一个TableCell来呈现我的所有单元格并且具有与Swing类似的行为?
来自Cell类的Javadoc:
由于TreeView,ListView,TableView和其他此类控件可能会用于显示难以置信的大量数据,因此无法为控件中的每个项创建实际的Cell.我们仅使用非常少的Cell来表示极大的数据集.每个Cell都被"回收"或重复使用.当我们说这些控件是虚拟化时,这就是我们的意思.
基本上,TableView只会创建尽可能多的单元实例,以便在屏幕上呈现内容.如果您滚动表格,细胞将被回收.基本上,这应该给你与Swing相同的性能,为更简单的编程模型交换小内存开销.