SWT:输入验证:防止输入sub和上标数字

时间:2015-01-29 10:38:57

标签: java validation input swt

我正在验证来自swt文本小部件的输入,但我无法阻止输入sub和上标数字。我的目标是只允许数字输入。我正在使用SWT验证监听器,我的代码是这样的:

[...]
Text input = new Text (parent, SWT.CENTER);
input.addListener(SWT.VERIFY, new Listener(){
public void handleEvent(Event e){
    if ( (e.character >= '0' && e.character <= '9') || e.character == SWT.BS || e.character == SWT.DEL){
        e.doit = true;
    } else {
        e.doit = false;
    }
}
});
[...]

我试图用这样的东西手动过滤它,但是没有做到这一点:

private boolean isSup(character c){
    if (c == '^0'){
        return true;
    } else if(c == '^1'){
        return true;
    } [...] else {
        return false;
    }
}

可能有一种简单直接的方法,但我没有看到它,谷歌也没有提供答案。

有人知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

与此同时,我找到了适合我的解决方案;我在这里张贴,希望它能帮助别人。

input = new Text(parent, style);    
input.addVerifyListener(new VerifyListener(){
        e.doit = false;
        String DIGIT = "[0-9]*";
        if (e.text.matches(DIGIT)){
            e.doit = true;
        }
    });

此解决方案确实允许前导零,但这些对我来说不是问题。我不知道,为什么比较字符算术不起作用,但e.text及其匹配方法工作正常。