Srs., boa tarde!
Espero que alguém possa me ajudar com o problema abaixo.
Tenho um JFrame com um campo de CEP do tipo JFormattedTextField.
Em algumas ocasiões o conteúdo deste campo é carregado pela aplicação e em outras ele é deixado em branco para ser preenchido pelo usuário.
Em ambas as situações o conteúdo deve ser formatado com a máscara “#####-###”.
Ou seja:
Quando estiver em branco: " - "
Quando estiver preenchido: “99999-999”
Para setar a máscara estou usando o MaskFormatter, mas quando instalo a máscara no JFormattedTextField ele limpa o conteúdo do campo.
Por outro lado, se setar o texto após a instalação da máscara, ele a remove.
Segue abaixo o código:
private void setCEP(String cep){
MaskFormatter maskf = new MaskFormatter();
if (cep.length() > 0 ){
jfCep.setText(cep);
}
try {
maskf.setMask("#####-###");
maskf.install(jfCep);
} catch (ParseException ex) {
Logger.getLogger(CadastroPessoa.class.getName()).log(Level.SEVERE, null, ex);
}
Na situação acima, independente da String cep ter conteúdo ou não, o resultado sempre é um JFormattedTextField com " - ".
Existe alguma forma de instalar uma máscara sem perder o texto?
Antecipadamente, obrigado.
http://www.guj.com.br/posts/list/29456.java
Formatação de CEP, CNPJ e CPF…
Talvez sua dúvida seja resolvida com o que já postaram lá…
Vou testar as soluções de lá.
Se conseguir fazer funcionar, postarei aqui.
Obrigado.
Acho que o nome do tópico não demonstra bem o problema que estou tendo.
A dificuldade não está em formatar o CEP nem em usar a máscara e sim em como usar o JFormattedTextField.
Na situação descrita acima, quando a String CEP está vazia, eu instalo a máscara em jfCEP para que quando usuário digitar algum conteúdo neste campo, o texto vá “encaixando” na máscara conforme ele digita. Além disso, com a máscara o usuário só consegue digitar dados numéricos.
Já quando a String CEP possui conteúdo, minha intenção era mostrar o conteúdo desta String no JfCEP formatada.
O problema é que o comando “maskf.install(jfCep);” instala a máscara, mas apaga o texto.
Tentei formatar o texto antes de dar o setText() e deixar de instalar a máscara, mas isso não resolve meu problema porque, apesar do texto aparecer formatado na jfCep, a ausência da máscara faz com que em uma eventual alteração o usuário possa digitar qualquer coisa, inclusive caracteres alfanuméricos.
Não tenho o hábito de postar dúvidas em fóruns e com o tempo aprenderei a ser mais claro.
Por ora, agradeço as ajudas que vierem.
Consegui!
Tão óbvio que chega a dar raiva! rs
Se a máscara apaga o texto, basta setar o texto após instalar a máscara! dãr
private void setCEP(String cep){
MaskFormatter maskf = new MaskFormatter();
try {
maskf.setMask("#####-###");
maskf.install(jfCep);
} catch (ParseException ex) {
Logger.getLogger(CadastroPessoa.class.getName()).log(Level.SEVERE, null, ex);
}
if (cep.length() > 0 ){
jfCep.setText(cep);
}
}
Mal ae…