Как обновить SWT TableViewer при изменении таблицы? - PullRequest
1 голос
/ 27 января 2012

У меня есть SWT TableViewer , который, конечно, отображает содержимое таблицы .Когда я изменяю вещи в таблице, программа просмотра не обновляется автоматически, чтобы показать изменения.В частности, я изменяю направление сортировки в одном из столбцов таблицы, но средство просмотра не будет обновляться, пока я не вызову viewer.refresh().Достаточно просто обновить зрителя в моих слушателях, прикрепленных к таблице, но для этого необходимо, чтобы слушатели таблицы знали о зрителе.Таблица тесно связана со средством просмотра.

Как лучше всего обновлять средство просмотра, если таблица не будет тесно связана со средством просмотра?

1 Ответ

3 голосов
/ 27 января 2012

Я точно не знаю, к каким слушателям вы подключаетесь Table, которые вы не можете поочередно подключить к TableViewer, чтобы получить их в качестве источника. Например, вместо того, чтобы подключить SelectionListener к вашему Table, вы можете подключить ISelectionChangedListener к TableViewer. В этом случае теперь вы получите TableViewer в качестве источника события вместо таблицы.

Конечно, возможно, что есть события, которые TableViewer не прокси соответствующим образом. В этом случае я бы вставил ссылку на TableViewer в данные Table при его создании. Например:

Table table = new Table(parent, SWT.NONE);
TableViewer tableViewer = new TableViewer(table);

table.setData("tableViewer", tableViewer);

table.addListener(SWT.DISPOSE, new Listener() {
    public void handleEvent(Event e)
    {
        Table table = (Table)e.widget;
        TableViewer tableViewer = (TableViewer)table.getData("tableViewer");
    }
});
...