我有一个关于 NatTable SWT 数据网格小部件的问题,我想用它来显示一个巨大的日志文件。
由于日志文件的大小可能有几 GB,因此我无法将其完全加载到内存中。应用程序应该使用尽可能少的堆空间。因此,借助一点缓存机制和文件中原始行位置的缓存,我IDataProvider
实现了动态读取日志文件行的方法。getDataValue
打开文件时,对其内容几乎一无所知——甚至不知道表格最终必须显示的行数。
这导致了几个问题,目前让我感到害怕:
1)我必须估计总行数(使用平均行长),直到文件被完全扫描并且最大行数确实是确定的。一旦出现这种情况,我的getRowCount
方法就会返回实际的、正确的行数。这似乎吓坏了 NatTable 小部件,它完全失去了当前位置并跳转到第 1 行!
2) 当做一些直观的事情时,例如双击列的边框(自动调整列的大小,就像在 Excel 中一样),我的应用程序完全冻结,因为突然使用我的提供程序查询所有行单元格的内容,整个概念是虐待!我不希望任何东西触发完整的文件读取!
有人对我有一些提示吗?文档太少太糟糕了......任何提示都非常感谢!如何防止我的应用程序冻结?
谢谢!