如何在JavaFX中提高TableView的性能

时间:2019-07-01 12:48:56

标签: javafx tableview

我有一个包含5000多个条目的TableView。有没有一种方法可以从数据库中仅加载前20个条目(TableView一次最多可以显示20个条目),并且当用户向下滚动时,接下来的20个条目将从数据库中加载。还是你们有更好的方法将RAM使用量保持在最低水平?

1 个答案:

答案 0 :(得分:3)

如果视口仅高20行,TableView将不会创建5000行图形。它可能只有大约25行,足以在屏幕外预加载几行以提高性能。当您上下滚动时,屏幕表行将与新的表模型数据一起回收。因此,您可以以某种方式“改善性能”的想法从一开始就是有些古怪。

延迟加载的主要问题是它实际上与TableView的许多元素不兼容。例如,当用户单击列标题进行排序时会发生什么?滚动光标应该有多大?如果用户将滚动光标向下拖动到底部会发生什么?

5000件物品对我来说似乎并不大。您的表模型应仅具有行显示所需的数据,在大多数情况下,这些数据可以归结为一些字符串和数字属性。因此,除非您的表的宽度为数百列,否则整个表的大小应合理。对于整个表模型,每行200字节只有1MB。