RWT TableViewer有时不刷新单元格颜色

时间:2014-11-13 11:25:51

标签: java tableviewer eclipse-rap

我的RWT 2.2.0应用程序中有一个TableViewer组件,它表示随时间(列)和产品(行)的值矩阵。 tableviewer处于虚拟/惰性模式,这些项目只是通过setInput和setItemCount设置在ArrayList中。

某些单元格需要着色,以防它们包含的值为负数。用户具有更改控件以更改视图的开始日期。在这种情况下,我使用新数据重新填充表,我调用refresh()并在CellLabelProvider.update()方法中填充值,如果需要,设置单元格ViewerCell.setForeground(颜色)或ViewerCell.setForeground的颜色(null)为默认值。

有时,尤其是在IE 9下,当上述时间分页发生时,单元格文本会更新,但单元格颜色保持不变,直到用户滚动(可能足够远,因此延迟加载会清除内部行缓存)。

如果我在setItemCount(actual)之前强行setItemCount(0)而不是刷新,效果就会消失,但滚动位置和选择也会使表格来回跳跃。

这是一个RWT错误,我忘记调用某些东西或者我误解了ViewerCell.setForeground(null)的工作原理吗?

1 个答案:

答案 0 :(得分:0)

这很可能是RWT中的一个错误。但在reporting a bug之前,请尝试使用最新版本的RWT(目前2.3.1稳定和/或3.0 M3开发)运行您的代码。

如果您需要同时解决此问题,可以在重置项目计数时保留选择:

ISelection selection = tableViewer.getSelection();
tableViewer.setItemCount( 0 );
tableViewer.setItemCount( actual );
tableViewer.setSelection( selection, true );