Pessoal, estou com um problema. Estou desenvolvendo uma tela para cadastro de Clientes e tenho 2 campos que serão formatados condicionalmente (CPF/CNPJ e Telefone Fixo/Celular).
Para isso criei 2 ComboBox e a máscara de cada um destes campos antes de ser aplicada deverá fazer a verificação da ComboBox.
Para isso criei um evento de FocusGained em cada campo, para aplicar a máscara assim que o cursor for posicionado. Escrevi o código e inicialmente está funcionando tudo certinho, mas descobri um Bug que estou “quebrando a cabeça” para resolver, mas até agora não consegui nada, por isso estou pedindo para alguma “mente iluminada” que possa me ajudar… rsrsrsrs
O Bug é o seguinte, quando o campo recebe o foco pela primeira vez a máscara funciona, porém, se ele perde o foco e depois ganha novamente mas com o ComboBox selecionado para aplicar a outra máscara o Java retorna um erro de Out of Bounds.
Segue abaixo os códigos:
//Criação das variaveis para a máscara
DefaultFormatterFactory maskTel;
DefaultFormatterFactory maskCel;
DefaultFormatterFactory maskCPF;
DefaultFormatterFactory maskCNPJ;
//Definição das máscaras
this.maskTel = new DefaultFormatterFactory(new javax.swing.text.MaskFormatter("(##)####-####"));
this.maskCel = new DefaultFormatterFactory(new javax.swing.text.MaskFormatter("(##)#####-####"));
this.maskCPF = new DefaultFormatterFactory(new javax.swing.text.MaskFormatter("###.###.###-##"));
this.maskCNPJ = new DefaultFormatterFactory(new javax.swing.text.MaskFormatter("##.###.###/####-##"));
//Evento de FocusGained
ftf_CpfCnpj.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
if(cb_TipoPessoa.getSelectedIndex() == 0){
ftf_CpfCnpj.setFormatterFactory(this.maskCPF);
}else{
ftf_CpfCnpj.setFormatterFactory(this.maskCNPJ);
}
}
});
ftf_Telefone.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(java.awt.event.FocusEvent evt) {
if(cb_TipoTelefone.getSelectedIndex() == 0){
ftf_Telefone.setFormatterFactory(this.maskTel);
}else{
ftf_Telefone.setFormatterFactory(this.maskCel);
}
}
});
Se alguém puder me ajudar agradeço muito…