Eclipse PreferencePage 中的 Apply 和 OK 按钮

Apply and OK Button in Eclipse PreferencePage

eclipse 首选项页面中的应用和确定按钮的标准和推荐方式是什么。

我检查发现当我们点击应用或确定按钮时调用了performOK()方法。这意味着如果我有一些计算或者假设线程从 performOK() 开始并且用户首先单击应用然后确定按钮它将被执行两次并且如果用户单击应用并取消更改将仍然应用?

如果用户点击应用然后确定,有没有办法不执行两次代码?

@Override
protected void performApply() {
    this.performOk();
}

@Override
public boolean performOk() {
    PreferencesUtil.savePreferences();
    return super.performOk();
}

谢谢

您需要记住 Apply 已经 运行 覆盖 performApply 并设置标志。然后您可以测试 performOk 中的标志并跳过做同样的事情。

如果用户在按下“应用”后更改了某些内容,请务必清除标志。

所以像这样:

private boolean saveDone = false;


public boolean performOk() {

  if (!saveDone) {
    saveDone = true;

    store.setValue(Constants.ENABLE_DEFAULT_COLOR, this.defaultColoringCheckBox.getSelection());
    PreferencesUtil.addToPreferenceStore(viewer.getTable());
    PreferencesUtil.savePreferences();
  }

  return super.performOk();
}

如果页面中有任何更改,则设置 saveDone = false

我认为当用户希望在单独的方法中应用更改时提取要执行的功能是有意义的。此方法从 apply AND ok 调用。 我不会从 "performApply" 中调用 "performOK"。在 performOk 中,额外关闭首选项对话框然后由 super 方法执行,我想。