eu precisava setar uma mascara no meu campo jtextfield quando limite for assim 123456 ele setar o formato e ficar assim 1.234.56
Obs: o getFormatoReal ta correto o problema e como setar o formato quando a variavel limite tiver mais que 5 casas decimais! alguem pode me da uma forca? obrigada!
Não entendi o que você quer fazer, nem o seu código…
Seja um pouco mais específico na dúvida…
B
biluquinha
Seguinte eu tenho um jtextfield no meu form, e quando ele ganha o focu, faco uma soma para ver quantos caracter eu digitei se ele me retornar mais que 5 ele entra em uma condicao, e eh nessa condicao que preciso que ele ganhe uma mascara no jtextfield!
O jtextfield recebe int veja: 12345, e quando eu digitar 123456 ele tem q busca a mascara e ficar assim 1.234.56, sacou?
lina
Oi,
Não sei se é uma saida muito boa...
Declare a variavel MaskFormatter:
MaskFormatter io_mf_formato = new MaskFormatter();
Lina, amiga obrigada por sua atencao e seu tempo, mas viu
io_mf_formato.install(lo_field);
ta dando cannot find symbol nessa classe! e o erro aponta apra lo_field sendo que coloquei o jtextfield que esta tendo a condicao length corretamente veja
Stringlimite=jt_limite.getText().replace(".","").replace("","").replace("_","");System.out.println("limite = "+limite);if(limite.length()>4){// Modifica a mascara.Stringls_value=jt_limite.getText();io_mf_formato.uninstall();io_mf_formato.setMask("#.###.##");io_mf_formato.install(ls_value);jt_limite.setText(ls_value);}
Estou fazendo algo de errado?
lina
Oi,
Sim... você deverá fazer.:
Stringlimite=jt_limite.getText().replace(".","").replace("","").replace("_","");System.out.println("limite = "+limite);if(limite.length()>4){// Modifica a mascara.Stringls_value=jt_limite.getText();io_mf_formato.uninstall();io_mf_formato.setMask("#.###.##");io_mf_formato.install(jt_limite);jt_limite.setText(ls_value);}
Tchauzin!
B
biluquinha
mesmo erro cannot find symbol methods install (JtextField), location MaskFormatter
lina
Oi,
A bom!! é pq você tem que utilizar um JFormattedTextField e não um JTextField.
Tchauzin!
B
biluquinha
Entao amiga, era isso mesmo coloquei como jformattedtextfield e n deu erro de compilacao! esse codigo esta dentro da thread certo!!! pois entao quando execulto o processo n acontece nada apenas trava a tela e a caixa de som faz um barulho muito sinistro! pq isso vc sabe?
lina
Oi,
Fiz um exemplo rapidinho! manda executar e verifique se vc está fazendo o mesmo:
importjava.awt.Container;importjava.awt.event.KeyAdapter;importjava.text.ParseException;importjava.awt.event.KeyEvent;importjavax.swing.JFormattedTextField;importjavax.swing.JFrame;importjavax.swing.text.MaskFormatter;publicclassEstudosextendsJFrame{privateJFormattedTextFieldlo_field;MaskFormatterio_mf_formato=newMaskFormatter();publicEstudos(){super("Eventos do Mouse e Teclado");Containerc=getContentPane();c.setLayout(null);lo_field=newJFormattedTextField();lo_field.setBounds(5,10,100,25);lo_field.addKeyListener(newKeyAdapter(){publicvoidkeyPressed(KeyEventevt){if(lo_field.getText().length()==6){try{Stringls_value=lo_field.getText();io_mf_formato.uninstall();io_mf_formato.setMask("#.###.##");io_mf_formato.install(lo_field);lo_field.setText(ls_value);}catch(ParseExceptione){e.printStackTrace();}}}});c.add(lo_field);setVisible(true);}publicstaticvoidmain(Stringargs[]){newEstudos().setVisible(true);}
Tchauzin!
B
biluquinha
Testei seu codigo e aqui funciono certinho, mas me fala uma coisa da para mim setar o install na mascara atravez da thread? pq dentro da thread da aquele problema? ou tem alguma outra maneira de resolver isso? pq pensa cumigo
Tenho 2 jtextField
JtextFieldA (tem foco) digito o valor
JtextFieldB (nao tem foco) apenas recebe o valor do jtextA
estando com o foco no jtextA como faco para se no campo jtextB tiver (.length() == 5) ele install a mascara!
mais uma vez obrigada por sua atencao!
lina
Oi,
Tem como colocar essa thread ??
colocar esse código iria facilitar as coisas… poderei compilar e verificar o problema =)
Tchauzin!
B
biluquinha
sim claro
privatefinalThreadThreadSoma(){return(newThread(newRunnable(){publicvoidrun(){while(!lo_thread.isInterrupted()){if(jt_salario.getText().length()>0&&jt_salario.getText().length()>0){PercentWageBeansalario=(PercentWageBean)jcb_salario.getSelectedItem();DecimalFormatdf2=(DecimalFormat)DecimalFormat.getNumberInstance();df2.setParseBigDecimal(true);Stringsalario2=jt_salario.getText();if("5%".equals(salario.getTipo())){try{BigDecimalbd=(BigDecimal)df2.parse(salario2);BigDecimalmultiplica=bd.multiply(newBigDecimal("0.05"));BigDecimaldivisao=multiplica.divide(newBigDecimal("100"));jft_limite.setText(divisao.toString());//String limite = jft_limite.getText().replace(".", "").replace("", "").replace("_", "");//System.out.println("limite = " + limite);Stringlimite=divisao.toString().replace(".","").replace(" ","").replace("_","");//System.out.println("limite = "+limite);if(limite.length()>4){System.out.println("limite = "+limite);//Modifica a mascara.Stringls_value=jft_limite.getText();io_mf_formato.uninstall();io_mf_formato.setMask("#.###.##");io_mf_formato.install(jft_limite);jft_limite.setText(ls_value);}}catch(ParseExceptionex){ex.printStackTrace();}}else{//// Aguarda 1 segundo e verifica novamente.// Isso servirá para não consumir muito a memoria do SOsynchronized(lo_thread){try{lo_thread.wait(1000);}catch(InterruptedExceptione){e.printStackTrace();}}}}}}));}
lina
Oi,
Desculpe… não consegui encontrar o problema! rodei aqui e funcionou corretamente…