Как обновить представление из кода в приложении Eclipse RCP - PullRequest
4 голосов
/ 20 сентября 2010

У меня есть класс View (extends ViewPart), который содержит ScrolledForm, созданный из FormToolkit. Когда определенные события происходят в других представлениях в приложении, я хочу изменить форму в этом представлении и обновить ее в реальном времени для пользователя.

У меня добавлена ​​поддержка поддержки изменения свойств и следующий метод в представлении

    public void propertyChange(PropertyChangeEvent event) {
    form.dispose();
    toolkit.dispose();
    createForm( event );
    form.redraw();
}

где createForm( event ) воссоздает форму, основанную на событии.

Проблема в том, что пользовательский интерфейс не отображает новую форму после этого. Я знаю, что форма создана ОК, потому что если я перетаскиваю границу между представлением и другим представлением, чтобы изменить его размер, то представление немедленно обновляется, чтобы показать новую форму. Как я могу программно принудительно обновить представление в пользовательском интерфейсе?

1 Ответ

6 голосов
/ 22 сентября 2010

Вы пробовали: form.reflow(true);?

Это пересчитает макет формы.

Если это не удастся, попробуйте вызвать xxx.layout(true), где 'xxx' - переменная mame SWT Composite, которая является родителем экземпляра формы.Я предполагаю, что форма создана на основе родительского композита в вашем createForm( event ) методе?

...