RWT TableViewer иногда не обновляет цвета ячеек

У меня есть компонент 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)?


person akarnokd    schedule 13.11.2014    source источник


Ответы (1)


Скорее всего, это ошибка в RWT. Но прежде чем сообщить об ошибке, попробуйте запустить свой код с последней версией RWT (в настоящее время 2.3.1 стабильная и/или 3.0 M3 разработка).

Если вам нужно временно обойти проблему, вы можете сохранить выбор при сбросе счетчика элементов:

ISelection selection = tableViewer.getSelection();
tableViewer.setItemCount( 0 );
tableViewer.setItemCount( actual );
tableViewer.setSelection( selection, true );
person Rüdiger Herrmann    schedule 13.11.2014
comment
С 2.3.1 проблема исчезла. Спасибо. - person akarnokd; 09.01.2015