Eclipse IWorkbenchPreferencePage设置的警告信息校验通过后不消失如何解决
实现方案
- 给所有需要校验的输入控件添加实时内容监听器:文本输入控件用
ModifyListener,选择类控件(下拉框、复选框等)用SelectionListener,每次控件内容发生变化就自动触发校验逻辑 - 封装独立的统一校验方法,所有校验逻辑收敛到该方法中:校验不通过时按原有逻辑设置警告消息,校验通过时调用
setMessage(null, IMessageProvider.NONE)即可自动清除当前展示的警告消息 - 重写页面的
performOk()、performApply()方法,在用户点击「确定」「应用」按钮时额外触发一次全量校验,覆盖用户未修改控件直接提交的场景
示例代码
// 页面初始化时给输入控件绑定校验监听 Text inputText = new Text(container, SWT.BORDER); inputText.addModifyListener(e -> validateInput()); // 统一校验方法 private void validateInput() { String content = inputText.getText().trim(); // 自定义校验规则 if (!isContentValid(content)) { setMessage("Not valid string", IMessageProvider.WARNING); // 若需要拦截提交可额外设置 setValid(false); } else { // 校验通过,清空警告消息 setMessage(null, IMessageProvider.NONE); setValid(true); } } // 提交前触发全量校验 @Override public boolean performOk() { validateInput(); return super.performOk(); } @Override protected void performApply() { validateInput(); super.performApply(); }
注意:如果你的页面同时存在错误级别的提示,需要调用
setErrorMessage(null)单独清除错误提示,setMessage方法仅处理普通、警告级别的消息。
内容的提问来源于stack exchange,提问作者steven
相关产品推荐
相关产品推荐

