gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 12:44:12 24 4
gpt4 key购买 nike

晚上好,

使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com