私は、 "Restore Defaults"と "Apply"ボタンを自動的に作成するカスタムPreferencePageを作っていますが、 "OK"と "Cancel"ボタンのすぐ下の右下隅にドッキングされたままではありませんEclipse IDEプリファレンスで彼らは私が作成する最後のウィジェットの直後にドッキングします。 Eclipse RCP PreferencePageの "defaults"と "apply"ボタンを最下部に残しておくにはどうすればいいですか?
これらのボタンを右下にドッキングさせておくにはどうしたらいいですか?ここで
私が持っているコードです:MVPrefPageはPreferencePageがIWorkbenchPreferencePageあなたは、このようなFieldEditorPreferencePage
ためのこの外のようなBooleanFieldEditor
としてフィールドエディタクラスを使用することはできません{
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();
}
これはうまくいくはずです。おそらくあなたの好みのページで何か間違っている。問題を示す[mcve]を私たちに教えてください。特に、 'createContents'メソッドでやること。 –
私は使用しているコードを含むように投稿を編集しました。 – Owen
'FieldEditorPreferencePage'の外でフィールドエディタクラスを使用することはできません。フィールドエディタはページレイアウトを調整できると期待し、' FieldEditorPreferencePage'にないときには正しく動作しないためです。 –