3

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

在 JavaFx 中渲染同一张表,我创建了 50000 个 TableCell 对象。

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

JavaFx 中是否有一种方法可以仅使用一个 TableCell 来呈现我的所有单元格并具有与 Swing 类似的行为?

4

1 回答 1

5

来自 Cell 类的 Javadoc:

由于 TreeView、ListView、TableView 和其他此类控件可能用于显示大量数据,因此为控件中的每个项目创建一个实际的 Cell 是不可行的。我们只使用很少的 Cell 来表示非常大的数据集。每个 Cell 都被“回收”或重复使用。这就是我们说这些控件是虚拟化的意思。

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

于 2013-08-30T18:13:58.413 回答