我是一名有用的助手,可以翻译文本。
我正在尝试以编程方式创建首选项页面,我需要在不在plugin.xml中定义preferencePage扩展点的情况下使用首选项页面。我离解决方案非常接近,我能够在应用程序加载时第一次加载页面并保存值。
我的代码核心如下:
我正在尝试以编程方式创建首选项页面,我需要在不在plugin.xml中定义preferencePage扩展点的情况下使用首选项页面。我离解决方案非常接近,我能够在应用程序加载时第一次加载页面并保存值。
我的代码核心如下:
PreferenceManager pmngr= PlatformUI.getWorkbench().getPreferenceManager();
//this come from other plugins that implements my personal IPreferences
PreferencePageRCP page =new PreferencePageRCP((IPreferences) element.createExecutableExtension("class"));
PreferenceNodeRCP node= new PreferenceNodeRCP(page.getId(), page.getTitle(),null,PreferencePageRCP.class.getName());
node.setPage(page);
pmngr.addToRoot(node);
我的PreferencePageRCP是自定义的首选项页面,所以现在我已经使我的PreferencePage工作!
但当我第二次打开首选项窗口时,在PreferenceNode.createPage上出现了错误,所以我现在重写了自己的PreferenceNode类并覆盖了createPage方法,但是现在我遇到了UI错误。
Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(SWT.java:4083)
at org.eclipse.swt.SWT.error(SWT.java:3998)
at org.eclipse.swt.SWT.error(SWT.java:3969)
at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
at org.eclipse.swt.widgets.Widget.checkWidget(Widget.java:340)
at org.eclipse.swt.widgets.Control.setVisible(Control.java:3370)
at org.eclipse.jface.dialogs.DialogPage.setVisible(DialogPage.java:470)
at org.eclipse.jface.preference.FieldEditorPreferencePage.setVisible(FieldEditorPreferencePage.java:374)
at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1323)
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:673)
at org.eclipse.jface.preference.PreferenceDialog$10.run(PreferenceDialog.java:708)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
andContributionItem.java:796
.................
所以第二次UI中缺少了某些内容,我现在无法修复我的代码,有人成功地通过编程方式创建了首选项页面吗?