【问题标题】:RWT TableViewer doesn't refresh cell colors sometimesRWT TableViewer 有时不会刷新单元格颜色
【发布时间】:2014-11-13 22:17:22
【问题描述】:

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

【问题讨论】:

    标签: java tableviewer eclipse-rap


    【解决方案1】:

    这很可能是 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 );
    

    【讨论】:

    • 在 2.3.1 中,问题消失了。谢谢。
    猜你喜欢
    • 2013-02-06
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2011-09-23
    相关资源
    最近更新 更多