选择正确的组件以在Eclipse RCP中显示文件的内容

时间:2012-10-30 10:07:04

标签: java swt eclipse-rcp

我正在使用Eclipse RCP(4)编写一个小尾部应用程序。在我的主窗口中,我希望显示文件的内容。我的第一个想法是使用SWT List组件但我的问题是当我打开一个非常大的文件(超过100000行)时List无法应对它。你知道我应该使用哪个组件吗?

我想根据某些条件过滤和/或突出显示记录,但我不想修改,因此它是只读的。

还有一件事:因为我无法将任意大(例如10 GB)文件加载到内存中,所以我只需将新行字符的位置读入List,然后将具体行加载到String中只有当他们要显示时。所以我需要一些只在它们变得可见时呈现线条的组件。

1 个答案:

答案 0 :(得分:0)

您可以使用SWT.VIRTUAL,以便可以实现延迟加载数据。 Here是Table和SWT.VIRTUAL的示例。

然而10GB是很多信息。我会以某种方式将文件分成许多块并加载它的特定部分。

[编辑]: 你应该知道的事情:

  

从3.1开始,TableViewer现在支持SWT.VIRTUAL标志。如果基础表是SWT.VIRTUAL,则内容提供者可以实现ILazyContentProvider而不是IStructuredContentProvider。请注意,在这种情况下,查看器不支持排序或过滤。另请注意,在这种情况下,如果未指定元素或尚未创建元素,则基于Widget的API可能会返回null。

     

SWT.VIRTUAL的用户还应避免在TreeViewer中使用Table中的getItems(),因为这不一定会为TreeViewer生成回调以填充项目。它还具有创建所有项目的副作用,从而消除了SWT.VIRTUAL的性能改进。

我尝试用大约700k项目实现TreeViewer。过滤器/搜索功能非常慢(我使用过FilteredTree)。