如何让Eclipse GEF GraphicalEditor在GridLayout中正常工作?
How to let Eclipse GEF GraphicalEditor work correctly in GridLayout?
我正在尝试将 GraphicalEditor 放入 eclipse RCP 项目的 GridLayout 中,以便在其下方添加另一个文本字段。
问题是:当我这样做时,尽管将编辑器周围的表单 GridData 对象设置为 grabExcessiveHorizontal(Vertical)Space = true(应该展开它的网格单元格尽可能宽)以及 horizontal/verticalAlignment = SWT.FILL(应尽可能宽地填充其单元格中的编辑器)。然后,编辑器将具有固定大小,并且不再随 window 缩放,这是我不想要的。
我使用了本教程中的 GEF 示例:
https://www.inf.ed.ac.uk/teaching/courses/ip/resources/GEF/GEF_Tutorial_2up.pdf
我修改了教程中的代码,尝试按以下方式在方法 createPartControl(Composite parent) 中设置布局...
@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);
}
...生成以下内容(我为表单正文着色以便更好地了解问题):
http://g10vz.de/files/graphicaleditorgridlayout.png
为什么编辑器不适合表格?还是我对 SWTs GridLayout 行为的预期有误?当使用 FillLayout 时,如注释掉的行所示,编辑器的行为符合预期。
问候
@greg-449 谢谢!你的建议让我想到了这个解决方案:
(...)
super.createPartControl(body);
getGraphicalControl().getParent().setLayoutData(formData);
你好:)
我正在尝试将 GraphicalEditor 放入 eclipse RCP 项目的 GridLayout 中,以便在其下方添加另一个文本字段。
问题是:当我这样做时,尽管将编辑器周围的表单 GridData 对象设置为 grabExcessiveHorizontal(Vertical)Space = true(应该展开它的网格单元格尽可能宽)以及 horizontal/verticalAlignment = SWT.FILL(应尽可能宽地填充其单元格中的编辑器)。然后,编辑器将具有固定大小,并且不再随 window 缩放,这是我不想要的。
我使用了本教程中的 GEF 示例:
https://www.inf.ed.ac.uk/teaching/courses/ip/resources/GEF/GEF_Tutorial_2up.pdf
我修改了教程中的代码,尝试按以下方式在方法 createPartControl(Composite parent) 中设置布局...
@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);
}
...生成以下内容(我为表单正文着色以便更好地了解问题):
http://g10vz.de/files/graphicaleditorgridlayout.png
为什么编辑器不适合表格?还是我对 SWTs GridLayout 行为的预期有误?当使用 FillLayout 时,如注释掉的行所示,编辑器的行为符合预期。
问候
@greg-449 谢谢!你的建议让我想到了这个解决方案:
(...)
super.createPartControl(body);
getGraphicalControl().getParent().setLayoutData(formData);
你好:)