java - 通过 ScopedPreferenceStore 在 FieldEditorPreferencePage 中设置默认值

标签 java eclipse-plugin eclipse-rcp

晚上好,

使用 java 1.7,我尝试使用类似于下面的代码片段的代码覆盖 FieldEditorPreferencePage 的 performApply() 方法。 (额外的代码没有什么区别,只是这一个方法)

@Override
public void performApply() {
    scopedPreferenceStore.setDefault(PREF_KEY, value);
    super.performApply();
}

本质上,我想更新 PREF_KEY 的默认首选项值,因此当用户在应用更改后点击“恢复默认值”时,它会使用新值而不是旧值。

问题是,如果我这样做,当我重新运行程序时,不会存储新的默认值。如果我放弃使用 setDefault(),则会存储新的默认值。

进一步澄清

使用setDefault:

如果我将首选项 A 更改为 100,单击应用,将首选项 A 更改为 25,然后单击恢复默认值,我将看到 100。如果我重新启动程序并查看首选项 A,我会看到 50。

不使用设置默认值:

如果我将首选项 A 更改为 100,单击应用,然后单击恢复默认值,我将看到 50。但是如果我将其更改回 100,单击应用,然后重新启动我的程序并查看首选项 A,我会看到 100。

是什么导致了这种行为以及如何解决它?

注意:我正在使用首选项初始值设定项,但是我希望动态地将默认值更改为最后应用的用户输入,而不会出现上述奇怪的行为。

最佳答案

要设置首选项默认值,您应该使用 org.eclipse.core.runtime.preferences 扩展点的 initializer 元素来定义“首选项初始值设定项”类。不要尝试在字段编辑器或其他任何地方覆盖它。

 <extension point="org.eclipse.core.runtime.preferences">
   <initializer class="com.example.MyPreferenceInitializer"/>
 </extension>
public class MyPreferenceInitializer extends AbstractPreferenceInitializer
{
  @Override
  public void initializeDefaultPreferences()
  {
    IPreferenceStore prefs = Activator.getDefault().getPreferenceStore();

    prefs.setDefault(PREF_KEY, VALUE); 
  }
}

关于java - 通过 ScopedPreferenceStore 在 FieldEditorPreferencePage 中设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44835635/

相关文章:

java - 如何在 Eclipse 插件中为文本字段添加自动完成功能?

eclipse - m2e - 将 Maven 插件添加到 Mule Studio 时缺少通过 logback 日志记录(可选)的 slf4j

eclipse - Eclipse 3.7 的 Google 插件未显示

java - 在 Eclipse RCP 应用程序中捕获终止信号

linux - 无法在 Linux x86_64 上使用 Java 1.8 启动 RCP Eclipse 4.4.2 应用程序

java - 如何从使用 StandardCharsets.US_ASCII 编码的字节中获取初始字符串?

java - 将 pdf 文件转换为单个 jpeg?

java - "java"与 intern() 的字符串比较为假

java - 扩展 Eclipse 的 JavaEditor(表现得像 Vim/改变 KeyListener)

java - 如何在 Eclipse 中查看 Spring Framework Javadoc?