我只允許*.exe我的FileFieldEditor. 它在檔案資源管理器中運行良好,但如果我輸入具有其他檔案型別的文本欄位路徑,則不會收到錯誤訊息(檔案存在)。這是正確的行為嗎?如果是這樣,我可能必須檢查字串是否以“.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;
}
}
uj5u.com熱心網友回復:
的setFileExtensions(和setFilterPath)方法僅用于設定任何引數FileDialog可能被示出。它們不用于對文本進行任何驗證。所以你需要做驗證。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/385014.html
