使SWT文本只能输入金额的步骤
开发中遇到这样的问题,本来想用正则表达式解决问题,但是始终未能解决,最后采用如下办法,部分代码如下:
//VerifyListener的位置很关键。
text.addVerifyListener(new VerifyListener() {
public void verifyText(VerifyEvent event) {
// 几种情况,有初值,输入控制键,输入中文,输入字符,输入数字
// 正整数验证
// PatternMatcher patternMatcher = new Perl5Matcher();
// PatternCompiler patternCompiler = new Perl5Compiler();
// org.apache.oro.text.regex.Pattern pattern;
// try {
//pattern = patternCompiler.compile("//d*");
//if (patternMatcher.matches(event.text, pattern)) {// 匹配
//event.doit=true;
//}else{
//event.doit=false;
//}
//} catch (MalformedPatternException e) {
//// TODO Auto-generated catch block
//e.printStackTrace();
//}
//Assume you don't allow it
event.doit = false;
//Get the Character typed
char myChar = event.character;
//Allow 0~9 .
if(text.getText().indexOf(".")==-1){//没有小数点时,可以输入小数点。(因为此验证是确保一次只能输入一个字符。)
if (myChar=='0' || myChar=='1' || myChar=='2' || myChar=='3' || myChar=='4' || myChar=='5'|| myChar=='6' || myChar=='7' || myChar=='8' || myChar=='9' || myChar == '/b' ||myChar == '.') {
event.doit = true;
}
}else{//只要有小数点,就不能输入小数点。
if (myChar=='0' || myChar=='1' || myChar=='2' || myChar=='3' || myChar=='4' || myChar=='5'|| myChar=='6' || myChar=='7' || myChar=='8' || myChar=='9' || myChar == '/b') {
event.doit = true;
}
}
//System.out.println("event.character:"+event.text);
//if (myChar=='0' || myChar=='1' || myChar=='2' || myChar=='3' || myChar=='4' || myChar=='5' || myChar == '/b' ||myChar == '.') {
//event.doit = true;
//}
//if (myChar=='.' && event.text.indexOf(".")==-1) event.doit = true;
//Allow Backspace
//MessageBox msgBox = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR );
//msgBox.setText( "输入错误!" );
//msgBox.setMessage( "你不能输入除数字和退格键以外的字符!" );
//msgBox.open();
}
});
使用SWT 有一段时间,要多对技术进行及时进行总结才有行。
本文地址:http://www.45fan.com/bcdm/70361.html