2

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

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

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

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

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

4

1 回答 1

0

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

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

ISelection selection = tableViewer.getSelection();
tableViewer.setItemCount( 0 );
tableViewer.setItemCount( actual );
tableViewer.setSelection( selection, true );
于 2014-11-13T14:17:22.223 回答