Olá, estou tentando fazer uma cadastro de clientes para uma casa de eventos.
Porém estou tentando usar um único jTextField para armazenar CPF ou CNPJ.
O gatilho para a mudança é a seleção do RadioButton. Um para marcar pessoa Física, outro para marcar pessoa Jurídica.
E a máscara não está sendo atualizada.
Estou aprendendo Java por conta própria, e ainda existe muita coisa que não entendo como funciona.
Espero que possam me ajudar.
[code]public void AtualizaCPF(){
LbDocumento.setText(“CPF:”);
try{
mascara_documento.setMask("###.###.###-##");
mascara_documento.setValidCharacters(“0123456789”);
}
catch(ParseException erro) {}
JFormattedTextField Documento = new JFormattedTextField(mascara_documento);
RBtnFisica.setSelected(true);
RBtnJuridica.setSelected(false);
}
public void AtualizaCNPJ(){
LbDocumento.setText(“CNPJ:”);
try{
mascara_documento.setMask("##.###.###/####-##");
mascara_documento.setValidCharacters(“0123456789”);
}
catch(ParseException erro) {}
JFormattedTextField Documento = new JFormattedTextField(mascara_documento);
RBtnJuridica.setSelected(true);
RBtnFisica.setSelected(false);
}
TfDocumento = new JFormattedTextField(mascara_documento); //Código inserido no Pós Criação do textField.
[/code]
Resolvo este problema com o seguinte método:
private void atualizaCampos() {
if (radioPj.isSelected()) {
labelNome.setText("Nome Razão:");
labelApelido.setText("Nome Fantasia:");
labelCpfCnpj.setText("CNPJ:");
textCpfCnpj.setText("");
try {
textCpfCnpj.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter("##.###.###/####-##")));
} catch (ParseException ex) {
Logger.getLogger(CECliente.class.getName()).log(Level.SEVERE, null, ex);
}
labelRg.setEnabled(false);
textRg.setEnabled(false);
labelNasc.setText("Fundação:");
} else {
labelNome.setText("Nome:");
labelApelido.setText("Apelido:");
labelCpfCnpj.setText("CPF:");
textCpfCnpj.setText("");
try {
textCpfCnpj.setFormatterFactory(new DefaultFormatterFactory(new MaskFormatter("###.###.###-##")));
} catch (ParseException ex) {
Logger.getLogger(CECliente.class.getName()).log(Level.SEVERE, null, ex);
}
labelRg.setEnabled(true);
textRg.setEnabled(true);
labelNasc.setText("Nascimento:");
}
}
Veja que eu verifico o radioPJ, que possui true para pessoa jurídica e false para física. Conforme estiver marcado, o método é executado e as máscaras são setadas!
Esqueci de uma coisa, os eventos dos radio buttom:
private void radioPjActionPerformed(java.awt.event.ActionEvent evt) {
atualizaCampos();
}
private void radioPfActionPerformed(java.awt.event.ActionEvent evt) {
atualizaCampos();
}
Obrigado pela ajuda, assim que conseguir implementar retorno para dizer se deu tudo certo!