如何从Eclipse RCP应用程序中的代码更新视图

Alb*_*Alb 4 java user-interface swt jface eclipse-rcp

我有一个ViewPart包含ScrolledForm从a创建的View类(extends )FormToolkit.当某些事件发生在应用程序的其他视图中时,我想在此视图中更改表单并让它实时更新给用户.

我现在添加了属性更改支持支持,并在视图中添加了以下方法

    public void propertyChange(PropertyChangeEvent event) {
    form.dispose();
    toolkit.dispose();
    createForm( event );
    form.redraw();
}
Run Code Online (Sandbox Code Playgroud)

在哪里createForm( event )根据事件重新创建表单.

问题是UI在此之后不显示新表单.我知道表单创建正常,因为如果我拖动View和另一个视图之间的边框来调整它的大小,那么View会立即更新以显示新表单.如何以编程方式强制在UI中强制刷新视图?

tbo*_*one 6

你试过了form.reflow(true);吗?

这将重新计算表单的布局.

如果失败,请尝试调用 xxx.layout(true)'xxx'是SWT Composite的变量mame,它是表单实例的父变量.我假设表单是在方法中针对其父组合创建的createForm( event )