Não sei se te ajudaria fazer essa validação no código...
Como eu trabalho com Struts executo esse metodo no FORM, mas vc poderia adaptar onde achasse melhor:
publicbooleanvalidaMoeda(Stringvalor){//valida até 999.999,99booleanvalidar=true;intlen=valor.length();// retorna qtde caractersintponto=valor.indexOf('.');// retorna 1 se existir ponto e -1 se não existirif(ponto!=-1){//se existir ponto System.out.println("nãouse.");validar=false;//termina o metodo }else{// se não existir ponto verificaremos a virgulaintvirgula=valor.indexOf(',');// retorna 1 se existir -1 se não existir if(virgula!=-1){//se existir...System.out.println("virguladigitada");if(len>9){//verificamos qtde de caracters digitadosSystem.out.println("valorinvalido>999999,99");validar=false;// e se for maior q 9 (pq inclui a virula) termina o metodo}else{//se não se qtde caracters for validatry{intposVirg=(len-3);//retorna posição da virgulacharvirg=valor.charAt(posVirg);// retorna o caracter posicionado na virgulaif(virg!=','){// se esse caracter não for uma virgulaSystem.out.println("virgulanãoestaposicionadanacasadecimalcorreta");validar=false;//termina o metodo}else{//senão se esse caracter for de fato uma virgulaStringantes=valor.substring(0,valor.indexOf(','));//recebe conteudo antes virgula Stringdepois=valor.substring(valor.indexOf(",")+1);//recebe conteudo após virgulaInteger.parseInt(antes);// valida pra ver se é um numeroInteger.parseInt(depois);}}catch(Exceptione){//caso não for numerico, ocorrera um erro e esse catch trata o valor não numericovalidar=false;}finally{returnvalidar;// retornando o status false do boolean}}}else{// sem virgulasif(len>6){// sem virgulas só é possivel uma entrada menor do valorSystem.out.println("valorinvalido>999999");validar=false;}else{try{Integer.parseInt(valor);//sem virgula basta uma conferencia pra ver se o valor é inteiro}catch(Exceptione){//caso não for numerico, ocorrera um erro e esse catch trata o valor não numericovalidar=false;}finally{returnvalidar;// retornando o status booleano }}}}returnvalidar;//se não entrou em nenhum catch temos que exibir a saída dos ifs true ou false}
Ai vc faz executa o metodo se retornar false não é valido!