org.eclipse.jface.preference.FileFieldEditor.setFileExtensions(String[]) 仅在文件资源管理器中有效吗?
Posted
技术标签:
【中文标题】org.eclipse.jface.preference.FileFieldEditor.setFileExtensions(String[]) 仅在文件资源管理器中有效吗?【英文标题】:Does org.eclipse.jface.preference.FileFieldEditor.setFileExtensions(String[]) work only in file explorer? 【发布时间】:2022-01-19 10:42:54 【问题描述】:我只允许在我的FileFieldEditor
中使用*.exe
文件。它在文件资源管理器中运行良好,但如果我输入其他文件类型的文本字段路径,我不会收到错误消息(文件存在)。这是正确的行为吗?如果是这样,我可能要检查字符串是否以“.exe”结尾,或者是否有一些实现的功能?
感谢您的帮助!
package test.preferences;
//imports
public class RootPP extends FieldEditorPP implements IWorkbenchPP
//code
@Override
protected void createFieldEditors()
// code
// Web browser
FileFieldEditor browserFE = new CustomFileFieldEditor(
PConstants.P_BROWSER_INSTALL_PATH,
"Web browser",
getFieldEditorParent());
browserFE.setChangeButtonText("Browse...");
browserFE.setEmptyStringAllowed(true);
browserFE.setFileExtensions(new String[]"*.exe");//allow only *.exe files
addField(browserFE);
//code
//code
和:
package test.preferences;
//imports
public class CustomFileFieldEditor extends FileFieldEditor
private boolean isPathValid;
public CustomFileFieldEditor(String name, String labelText, Composite parent)
//this(name, labelText, parent, true);
init(name, labelText);
//this.enforceAbsolute = enforceAbsolute;
setErrorMessage(JFaceResources.getString("FileFieldEditor.errorMessage"));
//$NON-NLS-1$
//setChangeButtonText(JFaceResources.getString("openBrowse"));//$NON-NLS-1$
//setValidateStrategy(validationStrategy);
setValidateStrategy(VALIDATE_ON_KEY_STROKE);
createControl(parent);
@Override
protected boolean doCheckState()
//code
@Override
protected boolean checkState()
//code
if (isPathValid)
clearErrorMessage();
else
Display.getCurrent().timerExec(2000, () ->
if (!isPathValid && !getTextControl().isDisposed())
showErrorMessage(errorMessage);
);
return isPathValid;
【问题讨论】:
【参考方案1】:setFileExtensions
(和setFilterPath
)方法仅用于设置可能显示的任何FileDialog
的参数。它们不用于对文本进行任何验证。所以你需要做验证。
【讨论】:
以上是关于org.eclipse.jface.preference.FileFieldEditor.setFileExtensions(String[]) 仅在文件资源管理器中有效吗?的主要内容,如果未能解决你的问题,请参考以下文章