Bem pessoal, o que acontece.
Aprendi recentemente utilizando as informações de fórum para criar mascarás em campos pelo Netbeans.
Adicionei o seguinte código na parte de propriedades da minha JTexfield para Celular.
No código de pré-criação:
javax.swing.text.MaskFormatter maskTelCel = null;
try
{
maskTelCel = new javax.swing.text.MaskFormatter("(##)####-#####");
maskTelCel.setPlaceholderCharacter(’_’);
}
catch (java.text.ParseException exc){}
No código personalizado:
new javax.swing.JFormattedTextField(maskTelCel);
Agora o meu problema é o seguinte, no caso do celular para São Paulo sabemos que todos os telefones receberam um digito 9 a mais. Quando eu digito um Celular nesse novo padrão tudo
ocorre de forma normal o telefone aparece dentro da mascará como esperado. Meus problemas começam quando eu tento digitar um celular que não possua o digito 9 na frente, nesse caso
deixando o ultimo campo vazio.
Exemplo:
(11)9123-12345 (caso com digito 9)
(21)1234-1234_ (caso sem o digito 9)
Quando eu termino de digitar o exemplo de baixo e saio da caixa de texto (Focus Lost), todo o texto da caixa desaparece.
O mesmo não ocorre caso eu digite todos os dígitos e em seguida apague o ultimo.
Utilizei a dica ai do Aldeir, mas como usei o método de adicionar os códigos personalizados a um JTextField para que ele recebesse a mascará, não estava conseguindo chamar o método setFocusLostBehavior, então peguei na paleta do netbeans o próprio componente JFormattedTextField e consegui invocar o método. Fazendo com que a caixa não se apague ao perder o focus
Valeu Aldeir :thumbup:
Meu problema agora é outro. Nesse componente JFormattedTextField não estou conseguindo configurar o setPlaceHolderCharacter.
Como faço isso? seria por código personalizado? pois não estou encontrando nenhuma propriedade especifica pra isso.