如何让EclipseGEF GraphicalEditor在GridLayout中正确工作?
我试图将GraphicalEditor放入eclipse RCP项目的GridLayout中,以便在其下方添加另一个文本字段 问题是:当我这样做时,编辑器将不再自动适应其窗口,尽管将其周围的forms GridData对象设置为grabExcessiveHorizontal(Vertical)Space=true(应将其网格单元扩展到尽可能宽)以及horizontal/verticalAlignment=SWT.FILL(应该在尽可能宽的单元格中填充编辑器)。然后编辑器将有一个固定的大小,不再随窗口缩放,这是我不想要的 我使用了本教程中的GEF示例: 我修改了教程中的代码,试图以以下方式在方法createPartControl(复合父对象)中设置布局如何让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(应该在尽可能宽的单元格中填充编辑器)。然后编辑器将有一个固定的大小,不再随
@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)