如何让EclipseGEF GraphicalEditor在GridLayout中正确工作?

如何让EclipseGEF GraphicalEditor在GridLayout中正确工作?,eclipse,swt,rcp,eclipse-gef,Eclipse,Swt,Rcp,Eclipse Gef,我试图将GraphicalEditor放入eclipse RCP项目的GridLayout中,以便在其下方添加另一个文本字段 问题是:当我这样做时,编辑器将不再自动适应其窗口,尽管将其周围的forms GridData对象设置为grabExcessiveHorizontal(Vertical)Space=true(应将其网格单元扩展到尽可能宽)以及horizontal/verticalAlignment=SWT.FILL(应该在尽可能宽的单元格中填充编辑器)。然后编辑器将有一个固定的大小,不再随

我试图将GraphicalEditor放入eclipse RCP项目的GridLayout中,以便在其下方添加另一个文本字段

问题是:当我这样做时,编辑器将不再自动适应其窗口,尽管将其周围的forms GridData对象设置为grabExcessiveHorizontal(Vertical)Space=true(应将其网格单元扩展到尽可能宽)以及horizontal/verticalAlignment=SWT.FILL(应该在尽可能宽的单元格中填充编辑器)。然后编辑器将有一个固定的大小,不再随窗口缩放,这是我不想要的

我使用了本教程中的GEF示例:

我修改了教程中的代码,试图以以下方式在方法createPartControl(复合父对象)中设置布局

@Override
public void createPartControl(Composite parent){

    FormToolkit toolkit = new FormToolkit(parent.getDisplay());
    Form form = toolkit.createForm(parent);
    Composite body = form.getBody();

    //FillLayout fillLayout = new FillLayout();
    //fillLayout.marginHeight = 15;
    //fillLayout.marginWidth = 15;

    GridLayout formLayout = new GridLayout();
    formLayout.marginHeight = 15;
    formLayout.marginWidth = 15;

    GridData formData = new GridData(SWT.FILL,SWT.FILL, true, true);

    body.setLayout(formLayout);
    body.setLayoutData(formData);
    body.setBackground(new Color(parent.getDisplay(),255,0,0));

    super.createPartControl(body);
}
…生成以下内容(为了更好地了解问题,我对表单主体着色):

为什么编辑器不适合表单?或者我在期望SWTs GridLayout的行为时犯了错误?当使用FillLayout时,如注释掉的行所示,编辑器的行为符合要求


您好

@greg-449谢谢!您的建议让我想到了这个解决方案:

(...)
super.createPartControl(body);

getGraphicalControl().getParent().setLayoutData(formData);

问候语:)

必须使用GridLayout在组合的子项上设置GridData-它们可能是在
super.createPartControl(body)