在PreferencePage中使用XXXFieldEditor来创建页面控件时,可能会遇到控件之间间距难以调整的问题。
如使用了扩展点org.eclipse.ui.preferencePage,需要编写实现类,若该实现类继承自FieldEditorPreferencePage,
class MyFieldEditorPrefPage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
protected void createFieldEditors() {
Composite parent = getFieldEditorParent();
//实例化一个ColorFieldEditor对象,并加入父容器
ColorFieldEditor colorField = new ColorFieldEditor("cName", "cLabel", parent);
addField(colorField);
//实例化一个Group对象,并加入父容器
Group group = new Group(parent, SWT.NONE);
group.setText("Group");
//设置Group对象在父容器中的布局
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
int nCol = colorField.getNumberOfControls();
gd.horizontalSpan = nCol;
group.setLayoutData(gd);
//实例化一个BooleanFieldEditor对象,并加入group中
BooleanFieldEditor bField = new BooleanFieldEditor("bName", "bLabel", group);
addField(bField);
}
}
运行以上代码会发现Group的边界与BooleanFieldEditor对象之间的间距较小,
若要调整该间距,只需在语句“addField(bField);”之后加入如下内容即可:
GidLayout gl = (GridLayout)group.getLayout();
gl.marginWith = gl.marginHeight = gl.verticalSpacing = 10;
//重新布局
group.layout();