Eclipse 从SWT/JFace TableViewer中仅刷新一列/单元格

Eclipse 从SWT/JFace TableViewer中仅刷新一列/单元格,eclipse,jface,tableviewer,Eclipse,Jface,Tableviewer,我现在有一个大表(大约1000行)和大约20列。在20列中,我需要每2-3秒刷新一次(保存从对象创建开始经过的时间),我尝试过每3秒刷新一次整个表,但由于行太多,因此整个表刷新会造成很大的性能损失 有人见过在JFace tableviewer中只刷新一个单元格/一列的方法吗??我需要一次经过时间列刷新,就这样 非常感谢您的帮助 谢谢 MirceaTableViewer的refresh()方法意味着在表示表中行的模型的对象列表发生更改时触发。如果只需要更新特定行或单元格中显示的文本或图像,则应使用

我现在有一个大表(大约1000行)和大约20列。在20列中,我需要每2-3秒刷新一次(保存从对象创建开始经过的时间),我尝试过每3秒刷新一次整个表,但由于行太多,因此整个表刷新会造成很大的性能损失

有人见过在JFace tableviewer中只刷新一个单元格/一列的方法吗??我需要一次经过时间列刷新,就这样

非常感谢您的帮助

谢谢
Mircea

TableViewer的refresh()方法意味着在表示表中行的模型的对象列表发生更改时触发。如果只需要更新特定行或单元格中显示的文本或图像,则应使用update()方法。该方法有多种变体,可以让您尽可能少地进行更新,也可以让我们尽可能多地进行更新。

TableViewer的refresh()方法是指当表示表中行的模型的对象列表发生更改时触发的方法。如果只需要更新特定行或单元格中显示的文本或图像,则应使用update()方法。这种方法有多种变体,可以让您尽可能少地更新,也可以让我们尽可能多地更新。

我知道TableViewer不希望一行只刷新一个单元格

AbstractTableViewer
protected void doUpdateItem(Widget widget, Object element, boolean fullMap)
您需要重写上述方法。当前实现刷新整行(基本上在每个单元格上调用
LabelProvider


您可以遵循相同的实现,但在特定的
ViewerCell上调用update

我知道TableViewer并不希望一行中只刷新一个单元格

AbstractTableViewer
protected void doUpdateItem(Widget widget, Object element, boolean fullMap)
您需要重写上述方法。当前实现刷新整行(基本上在每个单元格上调用
LabelProvider


您可以遵循相同的实现,但在特定的
ViewerCell上调用update

我也尝试过update(),但似乎无论我如何调用它(无论我使用什么变体…),它总是会更新整行,这对我来说是不可接受的,因为它会导致很大的性能损失。我从来没有见过一行的更新会花费大量的时间。我将看一看您的标签提供程序实现。也许你在那里做得太多了。如果你在标签提供者中做了大量的计算,你应该考虑缓存结果,以便标签查找是即时的。更新一个行花费很小的时间,但是我在那里有5K行,并且更新必须每隔2-3个sCOND完成,所以你可以想象负载。我已经尝试过Update()。同样如此,但似乎无论我如何称呼它(无论我使用什么变体…),它都会更新整行,这对我来说是不可接受的,因为这将导致巨大的性能损失。我从未见过一行的更新会花费大量时间。我将看一看您的标签提供程序实现。也许你在那里做得太多了。如果你在标签提供者中做了大量的计算,你应该考虑缓存结果,以便标签查找是即时的。更新一个行花费很小的时间,但是我在那里有5K行,并且更新必须每隔2-3个sCOND完成,所以你可以想象负载。谢谢。基于此,我成功地做了类似的事情。我发现这是更新单个单元格的唯一方法,通过扩展table viewer,从而可以访问一些受保护的方法,这些方法允许我访问tableviewer中的各个单元格。谢谢。基于此,我成功地做了类似的事情。我发现这是更新单个单元格的唯一方法,它扩展了tableviewer,从而可以访问一些受保护的方法,这些方法允许我访问tableviewer中的各个单元格。