[RESOLVIDO]setText Limpando JTextField ao usar do PlainDocument
6 respostas
wilsontads
Pessoal, to com um probleminha aqui… utilizei o PlainDocument, mostrado em um exemplo aqui no fórum para deixar os caracteres todos em maiusculos. Funcionou perfeitamente, o problema que estou tendo é que, quando faço algo do tipo :
tfCpfCnpj.setText("Wilson M.");
Meu TextField é limpado, e a mensagem contida no setText não aparece.
Alguém aqui já teve um problema semelhante, e pode ajudaR?
Sem postar o PlainDocument que você está usando, fica bem difícil te ajudar.
wilsontads
Desculpe..
importjava.awt.Toolkit;importjavax.swing.text.AttributeSet;importjavax.swing.text.BadLocationException;importjavax.swing.text.PlainDocument;publicclassTextFieldMaskCpfextendsPlainDocument{privateintiMaxLength=14;@OverridepublicvoidinsertString(intoffset,Stringstr,AttributeSetattr)throwsBadLocationException{if(iMaxLength<=0)// aceitara qualquer no. de caracteres{try{Integer.parseInt(str);super.insertString(offset,str,attr);formatCpf(offset,attr);return;}catch(NumberFormatExceptione){Toolkit.getDefaultToolkit().beep();return;}}intilen=(getLength()+str.length());if(ilen<=iMaxLength)// se o comprimento final for menor... {try{Integer.parseInt(str);super.insertString(offset,str,attr);// ...aceita strformatCpf(offset,attr);}catch(NumberFormatExceptione){Toolkit.getDefaultToolkit().beep();}}}privatevoidformatCpf(intoffset,AttributeSetattr)throwsBadLocationException{if(getLength()==4){super.insertString(offset,".",attr);}elseif(getLength()==8){super.insertString(offset,".",attr);}elseif(getLength()==12){super.insertString(offset,"-",attr);}}}
wilsontads
Na verdade fiz uma confusão de idéias, a intenção é mascarar o campo de CPF usando o PlainDocument ao invés do JFormattedTextField e não colocar tudo em UpperCase.
wilsontads
Debugando aqui, cheguei à seguinte mensagem:
Forinputstring:"[telefone removido]"
ViniGodoy
Esse valor é superior ao máximo que o Integer suporta ([telefone removido]).
Trabalhe diretamente com Strings ou use um long. Mas seria bom validar se o texto digitado tem mais dígitos que um CPF antes de fazer o parse.
wilsontads
Valeu, baixei a biblioteca commons-lang3-3.1.jar que tem o isNumeric e resolveu aqui… ObG: