0

我需要以编程方式创建一些首选项页面。当我第一次触发以下代码时,它会按预期工作:

    IPreferencePage page = new NewPreferencePage(test);
    page.setTitle("First Title");

    PreferenceManager pm = PlatformUI.getWorkbench().getPreferenceManager();
    PreferenceNode node = new PreferenceNode("node." + nodeName, page);
    pm.addToRoot(node);

    Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
            .getShell();

    PreferenceDialog pd = new PreferenceDialog(shell, pm);
    pd.setPreferenceStore(Activator.getDefault().getPreferenceStore());

    pd.create();
    pd.open();

问题是当我尝试从标准模式(Window -> Preferences)访问首选项时发生错误,并且我创建的节点为空。此外,当我触发此代码超过 2 次时,会创建一个新节点,并且前一个节点在首选项列表中显示为空白行。

任何人都有一些教程或一些详细信息来描述如何以编程方式创建它。我在网上搜索并尝试了不同的方法,但没有成功。

或者,如果有人知道如何在触发菜单时更改标准 PreferenceDialog,我可以尝试另一种解决方案。

这个问题与这个问题类似: Eclipse: create preference page programmatically,但我还是无法解决它。

谢谢

4

1 回答 1

0

我遇到了同样的问题,我通过在我的偏好页面中覆盖 getPreferenceStore() 来解决它,它可以工作。请看下面的代码:

@Override
public IPreferenceStore getPreferenceStore() {
    return MarkerPlugin.getDefault().getPreferenceStore();
}
于 2012-07-20T14:28:42.537 回答