2013-02-21 2 views
1

В настоящее время у меня большая таблица (около 1000 строк) и около 20 столбцов. Из 20 столбцов мне нужно, чтобы каждый обновлялся каждые 2-3 секунды (прошло истекшее время от создания объекта), я пробовал это, обновляя всю таблицу каждые 3 секунды, но из-за большого количества строк это большая производительность пенальти всю эту таблицу обновить.Обновить только один столбец/ячейку от SWT/JFace TableViewer

Кто-нибудь видел способ обновления только одной ячейки/одной колонки в JFace tableviewer ?? Мне нужно, чтобы обновлялся один прошедший период времени, и все.

Любая помощь очень ценится.

Благодаря Мирча

ответ

2

Я вижу, что TableViewer не ожидал обновления только одной ячейки в строке.

AbstractTableViewer 
protected void doUpdateItem(Widget widget, Object element, boolean fullMap) 

Вам необходимо переопределить вышеуказанный метод. Текущая реализация обновляет всю строку (в основном вызывающую LabelProvider на каждой клетке)

Вы можете следить за одну реализацию, но вызывать обновление на конкретных ViewerCell

+0

Спасибо за это. На этом я сумел сделать что-то подобное. Это я нашел единственный способ обновить одну ячейку, расширив просмотр таблицы и тем самым получив доступ к некоторым защищенным методам, которые позволяют мне получить доступ к отдельным ячейкам в tableviewer. – Mircea

1

метода The TableViewer освежит() предназначен для срабатывать, когда список объектов, представляет собой модель для ряда таблицы изменяется. Если вам нужно только обновить текст или изображение, показанное в определенной строке или ячейке, вы должны использовать метод update(). Существуют варианты этого метода, позволяющие вам обновлять как можно меньше или при необходимости.

+0

Я попытался обновления(), как хорошо, но это, кажется, что независимо от того, как я называю он (независимо от того, какой вариант я использую ...), он всегда будет обновлять всю строку, которая неприемлема для меня, потому что это приведет к большому штрафу за производительность. – Mircea

+0

Я никогда не видел обновления одной строки, чтобы занять значительное количество времени. Я бы посмотрел на реализацию вашего поставщика ярлыков. Возможно, вы слишком много делаете. Если вы выполняете тяжелые вычисления в своем поставщике ярлыков, вам следует подумать о кешировании результатов, чтобы поиск меток был мгновенным. –

+0

Обновление одной строки занимает очень мало времени, но у меня есть 5k строк, и обновление должно выполняться каждые 2-3 сеанса, так что вы можете себе представить нагрузку. – Mircea

Смежные вопросы