【发布时间】:2016-12-13 15:36:24
【问题描述】:
我制作了一个自定义的 PreferencePage,它会自动创建“恢复默认值”和“应用”按钮,但是,它们不会像它们一样停留在“确定”和“取消”按钮上方的右下角在 Eclipse IDE 首选项中执行。它们只是在我创建的最后一个小部件之后立即停靠。
如何让这些按钮保持停靠在右下方?
这是我的代码:
公共类 MVPrefPage 扩展 PreferencePage 实现 IWorkbenchPreferencePage {
List<FieldEditor> editors = new ArrayList<>();
public MVPrefPage() {
}
public MVPrefPage(String title) {
super(title);
}
public MVPrefPage(String title, ImageDescriptor image) {
super(title, image);
}
@Override
public void init(IWorkbench workbench) {
setPreferenceStore(MatrixVisualizationActivator.getDefault().getPreferenceStore());
}
@Override
protected Control createContents(Composite parent) {
editors.add(new BooleanFieldEditor(MatrixSettings.TITLE_ON_PROPERTY, "Show title", parent));
editors.add(new BooleanFieldEditor(MatrixSettings.SHOW_ROW_HEADERS_PROPERTY, "Show row headers", parent));
editors.add(new BooleanFieldEditor(MatrixSettings.SHOW_COLUMN_HEADERS_PROPERTY, "Show column headers", parent));
editors.add(new BooleanFieldEditor(MatrixSettings.SHOW_HIDDEN_VALUES_PROPERTY, "Show hidden values", parent));
editors.add(new BooleanFieldEditor(MatrixSettings.SHOW_MATRIX_ELEMENT_DISPLAY_NAMES_PROPERTY,
"Show matrix element display names", parent));
editors.add(new BooleanFieldEditor(MatrixSettings.CHART_SYNC_HIGHLIGHTER_PROPERTY,
"Highlight view with chart sync", parent));
editors.add(new BooleanFieldEditor(MatrixSettings.CHART_SYNC_SCROLL_PROPERTY, "Scroll view with chart sync",
parent));
editors.add(new BooleanFieldEditor(MatrixSettings.VIEW_SCROLLBAR_SYNC_PROPERTY, "Add scrollbar to synchronizer",
parent));
String[][] entryNamesAndValues = { { "Left", "LEFT" }, { "Right", "RIGHT" }, { "Center", "CENTER" } };
editors.add(new ComboFieldEditor(MatrixSettings.VIEW_SNAP_PROPERTY, "Grid snap setting", entryNamesAndValues,
parent));
editors.stream().forEach(fe -> {
fe.setPreferenceStore(getPreferenceStore());
fe.fillIntoGrid(parent, 2);
fe.load();
});
return parent;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
*/
@Override
protected void performDefaults() {
editors.stream().forEach(fe -> fe.loadDefault());
super.performDefaults();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.PreferencePage#performOk()
*/
@Override
public boolean performOk() {
editors.stream().forEach(fe -> fe.store());
return super.performOk();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.preference.PreferencePage#performApply()
*/
@Override
protected void performApply() {
super.performApply();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.dialogs.DialogPage#dispose()
*/
@Override
public void dispose() {
editors.stream().forEach(fe -> fe.dispose());
super.dispose();
}
【问题讨论】:
-
这应该可以。您可能在偏好页面中做错了什么。向我们展示一个 minimal reproducible example 来演示问题。特别是你在
createContents方法中所做的事情。 -
我已经编辑了帖子以包含我正在使用的代码。
-
您不能在
FieldEditorPreferencePage之外使用这样的字段编辑器类,因为字段编辑器希望能够调整页面布局,而当不在@987654327 中时它将无法正常工作@ -
这就是问题所在,非常感谢!
标签: java eclipse eclipse-rcp