我的 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) 的工作原理?