Duvida em montar mascaka para um JFormattedTextField
3 respostas
S
shakallPJ
Galera preciso de ajuda em 2 campos do tipo JFormattedTextField
no primeiro campo o “preco”, preciso montar uma mascara que fique da seguinte forma R$ 10.00, R$ 100.00, R$ 150.75, R$ 25000.25 tah complicado pq não estou conseguindo que fique desta forma.
no outro campo o “cnpj” é um campo onde digitarei a inscrição estadual nele deve aceitar tanto o 64.803.570/0001-00 quanto o 764.803.570/0001-00
alguem pode ma ajudar? pq o problema que estou encontrado é qeu tenho que digitar exatamente como esta na mascara se não ele não aceita
Amigo valeu pela ajuda, no campo do preço depois de criar o DecimalFormat como eu uso ele? pq no exemplo vc não ligou ele com o campo JFormattedTextField, aito na duvida de como utiliza-lo. valeu!!
R
rodrigobrazPJ
ai cara... usa essa classe e altera pro q vc quiser!
da uma olhada:
publicclassDecimalFormattedFieldextendsJFormattedTextField{publicstaticintFLOAT_TYPE=1;publicstaticintDOUBLE_TYPE=2;privateDecimalFormatdf=newDecimalFormat();privateinttypeOfValue=1;privatefloatfValue=0.00f;privatedoubledValue=0.00;privateStringsDecimals;privateStringoldValue;/** Creates a new instance of DecimalFormattedField */publicDecimalFormattedField(){super();this.setHorizontalAlignment(JTextField.RIGHT);df.applyPattern("R$ #,##0.00; R$ (#,##0.00)");applyActions();}/** * Cria um campo formatado para valor monetário. * @param typeOfValue tipo do valor do campo [float (default) ou double] */publicDecimalFormattedField(inttypeOfValue){super();this.typeOfValue=typeOfValue;this.setHorizontalAlignment(JTextField.RIGHT);df.applyPattern("R$ #,##0.00; R$ (#,##0.00)");applyActions();}/** * Cria um campo formatado para valor monetário. * @param typeOfValue tipo do valor do campo [float (default) ou double] * @param decimals número de casas decimais depois do zero. */publicDecimalFormattedField(inttypeOfValue,intdecimals){super();this.typeOfValue=typeOfValue;this.setHorizontalAlignment(JTextField.RIGHT);Strings=getDecimalPattern(decimals);df.applyPattern("R$ #,##0."+s+"; R$ (#,##0."+s+")");System.out.println("\n"+s+"\n");applyActions();}privatevoidapplyActions(){this.addKeyListener(newKeyAdapter(){publicvoidkeyPressed(KeyEventevt){if(evt.getKeyCode()==KeyEvent.VK_ENTER)transferFocus();}});this.addFocusListener(newFocusAdapter(){publicvoidfocusLost(FocusEventevt){thisFocusLost(evt);}});this.addFocusListener(newFocusAdapter(){publicvoidfocusGained(FocusEventevt){thisFocusGained(evt);}});}publicvoidthisFocusLost(FocusEventevt){Stringvalor=getText().replaceAll(",",".");if(!valor.equals(""))oldValue=valor;setValue(valor);}publicvoidthisFocusGained(FocusEventfe){this.setText("");normalText();}privatevoidsetValue(Stringvalue){if(typeOfValue==1){try{fValue=Float.parseFloat(value);}catch(Exceptione){//fValue = 0.00f;value=oldValue;}}else{try{dValue=Double.parseDouble(value);}catch(Exceptione){//dValue = 0.00f;value=oldValue;}}showValue(value);}/** * Mostra o valor formatado monetariamente * @param s valor informado no campo */publicvoidshowValue(Strings){try{this.setText(df.format(newjava.math.BigDecimal(s)));}catch(Exceptione){error("somente números");}}/** * Retorna o valor inserido no campo. * @return fValue float value */publicfloatgetFloatValue(){returnfValue;}/** * Retorna o valor inserido no campo. * @return dValue double value */publicdoublegetDoubleValue(){returndValue;}/** * Retorna a quantidade de zeros da casa decimal * @return sDecimals quantidade de zeros (ex.: 000 - 3 zeros depois da vírgula) */privateStringgetDecimalPattern(intnrDecimals){sDecimals="";for(inti=0;i<nrDecimals;i++){sDecimals=sDecimals+"0";}returnsDecimals;}/** * Mostra o texto em vermelho e no estilo negrito. */privatevoiderror(Stringtext){this.setFont(newjava.awt.Font("Tahoma",java.awt.Font.BOLD,11));this.setForeground(newjava.awt.Color(255,0,0));this.setText(text);}/** * Volta o texto ao formato original */privatevoidnormalText(){this.setFont(newjava.awt.Font("Tahoma",java.awt.Font.PLAIN,11));this.setForeground(newjava.awt.Color(0,0,0));}}