У меня есть компонент TableViewer в моем приложении RWT 2.2.0, который представляет матрицу значений во времени (столбцы) и продуктов (строки). Средство просмотра таблиц находится в виртуальном/ленивом режиме, а элементы находятся только в наборе ArrayList через setInput и setItemCount.
Некоторые ячейки должны быть окрашены, если содержащееся в них значение отрицательное. Пользователь имеет дополнительный контроль над изменением даты начала просмотра. В этом случае я повторно заполняю таблицу новыми данными, вызываю refresh() и в методе CellLabelProvider.update() заполняю значения и при необходимости устанавливаю цвет ячейки ViewerCell.setForeground(color) или ViewerCell.setForeground (ноль) для значения по умолчанию.
Иногда, особенно в IE 9, когда происходит вышеуказанное разбиение по страницам, текст ячейки обновляется, но цвет ячейки остается прежним, пока пользователь не прокручивает (вероятно, достаточно далеко, чтобы ленивая загрузка очищала его внутренний кеш строк).
Если я принудительно устанавливаюItemCount(0) перед setItemCount(actual) вместо обновления, эффект исчезает, но то же самое происходит с положением прокрутки и выделением, которые заставляют таблицу прыгать вперед и назад.
Является ли это ошибкой RWT, я забыл что-то вызвать или неправильно понимаю, как работает ViewerCell.setForeground(null)?