Eclipse 首选项页面中的"应用"和"确定"按钮应该工作的标准和推荐方式是什么?
我检查并发现当我们单击应用或确定按钮时调用了 performOK(( 方法。这意味着如果我有一些计算或让说线程在 performOK(( 中启动并且用户首先单击应用,然后单击确定按钮,它将执行两次,如果用户单击应用并取消更改无论如何都会应用?
如果用户单击"应用"然后确定,有没有办法不执行两次代码?
@Override
protected void performApply() {
this.performOk();
}
@Override
public boolean performOk() {
PreferencesUtil.savePreferences();
return super.performOk();
}
谢谢
记住,应用程序是通过覆盖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
页面中是否有任何更改。
用户希望在单独的方法中应用更改时提取要执行的功能是有意义的。此方法从应用和确定调用。我不会在"performApply"中称"执行OK"。我想,在 performOk 中,首选项对话框的额外关闭然后由超级方法执行。