Olá, estou com este problema que está consumindo muito meu tempo, acredito que seja algo simples de se resolver mas mesmo assim não consigo faze-lo funcionar como desejo. Quero alterar, mudar a mascara do JTextField de forma dinamica, de acordo a escolha, no caso existe RadioButtons para definer como vai ser a mascara (CPF ou CNPJ). Desde já agredeço quem puder me ajudar rapido.
public void fields() {
JRadioButton rbCPF = new JRadioButton("CPF", true);
JRadioButton rbCNPJ = new JRadioButton("CNPJ", false);
ButtonGroup bg = new ButtonGroup();
bg.add(rbCPF);
bg.add(rbCNPJ);
rbCPF.setBounds(20, 70, 50, 15);
rbCNPJ.setBounds(20, 90, 60, 15);
add(rbCNPJ);
add(rbCPF);
campoTipoCadastro = new JTextField();
campoTipoCadastro.setBounds(20, 150, 200, 35);
campoTipoCadastro.setEnabled(false);
rbCPF.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("actionperformedd cpf");
campoTipoCadastro.setEnabled(true);
MaskFormatter cpf;
try {
cpf = new MaskFormatter("***.***.***-**");
cpf.setValidCharacters("0123456789");
campoTipoCadastro = new JFormattedTextField(cpf);
System.out.println("actionperformedd cpfufufnu");
}catch (ParseException ee) {}
add(campoTipoCadastro);
}
});
rbCNPJ.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("actionperformedd cnpj");
campoTipoCadastro.setEnabled(true);
MaskFormatter cnpj;
try {
cnpj = new MaskFormatter("***.***.***/****-**");
cnpj.setValidCharacters("0123456789");
campoTipoCadastro = new JFormattedTextField(cnpj);
} catch (ParseException e1) {}
add(campoTipoCadastro);
}
});
add(campoTipoCadastro);
}
private String format(String type) {
switch(type) {
case "CNPJ":
return "**.***.***/****-**";
default:
return "***.***.***-**";
}
}
Nesse meu contexto, onde esse metodo se encaixaria?
Ao invés disso
cpf = new MaskFormatter("***.***.***-**");
Usa isso
cpf = new MaskFormatter(format("CPF"));
ou
cpf = new MaskFormatter(format("CNPJ"));
Entendi, mas não apareceu a mascara ainda…
public void fields() {
OuvinteExternoDeFoco ouvinteDeFoco = new OuvinteExternoDeFoco();
campoNome = new TextFieldPadrao(350, 70, 250, 35);
add(campoNome);
JRadioButton rbCPF = new JRadioButton("CPF", false);
JRadioButton rbCNPJ = new JRadioButton("CNPJ", false);
ButtonGroup bg = new ButtonGroup();
bg.add(rbCPF);
bg.add(rbCNPJ);
rbCPF.setBounds(20, 70, 50, 15);
rbCNPJ.setBounds(20, 90, 60, 15);
add(rbCNPJ);
add(rbCPF);
campoTipoCadastro = new JTextField();
campoTipoCadastro.setBounds(20, 150, 200, 35);
campoTipoCadastro.setEnabled(false);
rbCPF.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
campoTipoCadastro.setEnabled(true);
MaskFormatter cpf;
try {
cpf = new MaskFormatter(format("CPF"));
cpf.setValidCharacters("0123456789");
campoTipoCadastro = new JFormattedTextField(cpf);
}catch (ParseException ee) {}
add(campoTipoCadastro);
}
});
rbCNPJ.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
campoTipoCadastro.setEnabled(true);
MaskFormatter cnpj;
try {
cnpj = new MaskFormatter(format("CNPJ"));
cnpj.setValidCharacters("0123456789");
campoTipoCadastro = new JFormattedTextField(cnpj);
} catch (ParseException e1) {}
add(campoTipoCadastro);
}
});
add(campoTipoCadastro);
try {
MaskFormatter telefone = new MaskFormatter("(**) * ****-****");
telefone.setValidCharacters("0123456789");
campoTelefone = new JFormattedTextField(telefone);
campoTelefone.setBounds(350, 150, 140, 35);
campoTelefone.addFocusListener(ouvinteDeFoco);
}catch (ParseException e2) {}
add(campoTelefone);
campoCidade = new TextFieldPadrao(20, 230, 250, 35);
add(campoCidade);
campoRua = new TextFieldPadrao(350, 230, 250, 35);
add(campoRua);
campoNumero = new TextFieldPadrao(650, 230, 50, 35);
add(campoNumero);
campoBairro = new TextFieldPadrao(20, 310, 250, 35);
add(campoBairro);
}
private String format(String type) {
switch(type) {
case "CNPJ":
return "**.***.***/****-**";
default:
return "***.***.***-**";
}
}