我正在验证来自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;
}
}
可能有一种简单直接的方法,但我没有看到它,谷歌也没有提供答案。
有人知道如何实现这个目标吗?
答案 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及其匹配方法工作正常。