Ajuda com JFormattedTextField

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.

Alguma ideia de como posso parar isso?

Acontece isso porque você informou que necessita de todos os campos ali.

Também não sei a resposta, vamos esperar alguém responder para vermos se tem como fazer o que voce quer… acho interessante pra mim também…

Só uma dica, coloque os codigos em Java dentro do comando [ CODE ] aqui no forum, fica mais fácil de se enxergar.

Abraços

Usa isso

seuJFormattedTextField.setFocusLostBehavior(JFormattedTextField.COMMIT_OR_REVERT);

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.

Talvez isto te ajude.

http://www.guj.com.br/java/147670-setplaceholder

setPlaceHoldCharacter aceita somente tipo Char, entao voce precisa passar como parametro entre aspas simples (’_’) por exemplo.

E se nao me engano voce precisa usar um MaskFormatter para isso.

Aldeir tu é uma máquina de resolver problemas :thumbup:
Tudo resolvido aque, valeus