天天看点

swt中text只能输入数字的完美解决

搞java有两年了,技术上一直也不怎么样,自己开发点东西,这个可是自己好不容易搞定的,希望能给后来人帮助

text.addVerifyListener(new VerifyListener() {

      public void verifyText(VerifyEvent event) {

       event.doit = false;

       char myChar = event.character;

       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;

        }//小数点后够两位,输入无效

        if(text.getText().substring(text.getText().indexOf(".")+1).length()>1){

          event.doit=false;

        }

       }//退格有效

       if(myChar == '/b')

        event.doit=true;

      }

      }

     );