Possuo um formulário de localizar, com 3 RadioButton e 1 JformattedTextField.
Os radio são: codigo, nome e cpf.
Para cada escolha dessa, o JFTextField deve possuir uma mascara.
Na primeira vez dá certo, mas nas próximas, ele não atualiza para a mascara certa.
Até onde é meu conhecimento, o java não tem nada pronto para seu caso (desculpe se estou errada)…
Você teria que criar uma método para verificar o documento de formatação do campo, e toda vida valida-lo…
O que posso mostrar é um código que deixa o usuario digitar formato de só números, ou datas… em fim… se ajudar:
//
// Para campos de data..
//
io_tf_teste = new JFormattedTextField(new SimpleDateFormat("dd/MM/yyyy"));
io_tf_teste.setBounds(10,160,200,30);
io_ct.add(io_tf_teste);
toda vez q o cara mudar la o radio, vc remove seu JFTF e instancia otro, setando a nova mascara…
passei por essa tb, tinha criado um metodo pra, dependendo do formato q passasse, setasse uma nova mascara (criando um novo MaskFormatter e instalando ele (install) no JFTF)… mas, uma vez setado a mascara, nao consegui TROCAR…
dica: nao perde tempo com essas paradinhas de Swing… senao vai ficar louco…
Oi de novo,
Olha o fabiocsi está completamente certo!
Se você for afundo nisso ira ficar Louco!,
eu consegui um código, depois de muita busca… e ele faz isso que você quer… validando cpf e mascara de ip… mais o código está em Italiano… e é realmente ENORME…
Quando na documentação não existir uma forma explícita de como fazer algo (como por exemplo a troca de máscara) vc pode primeiro, verificar o que cada método faz e tentar chegar a solução verificando aqueles que você acha que deve fazer o serviço utilizando outras classes ou então, o que eu prefiro, dar uma olhada no código fonte do swing…
Se vcs olharem o código dos contrutores da JFormattedTextField vcs verão como é setada uma máscara. Assim é só aplicar ao que vc precisa.
No contrutor é o único local que tem explícito o uso de um Formater para utilizar no JFormattedTextField, então pesquise o código dos contrutores
Quando na documentação não existir uma forma explícita de como fazer algo (como por exemplo a troca de máscara) vc pode primeiro, verificar o que cada método faz e tentar chegar a solução verificando aqueles que você acha que deve fazer o serviço utilizando outras classes ou então, o que eu prefiro, dar uma olhada no código fonte do swing…
Se vcs olharem o código dos contrutores da JFormattedTextField vcs verão como é setada uma máscara. Assim é só aplicar ao que vc precisa.
No contrutor é o único local que tem explícito o uso de um Formater para utilizar no JFormattedTextField, então pesquise o código dos contrutores
Até mais galera![/quote]
Ou entao vc extende JTextField e faz o seu proprio FTF…
que e bem mais pratico do q ficar desvendando os misterios do swing :-o
Não creio que seja mais fácil implementar um formatted text field ao inés de olhar a documentação e aprender como funciona. Se algo pronto ja é misterioso como vc falou, imagina um componente reimplementado para fornecer algo que já existe…
Claro, esqueci de dizer, no caso do amigo que iniciou o tópico, eu fiz o exemplo usando o combo, vc deve fazer usando seu radio.
E marciofirmino, perca essa mania de ficar mandando “.” nas msgs só pra elas aparecerem no topo da lista… os colegas vão te ajudar de qq forma, independente da sua msg ser a primeira da lista ou não, pode acreditar!
Só vão parar de te ajudar se não respeitar as regras do fórum
Bom dia, estou ressucitando este tópico pois levei mais de uma hora para encontrar a solução e acredito que outros colegas devem enfrentar o mesmo problema.
if(cbTipo.getSelectedIndex() == 1)//CNPJ
if(ftfPesquisa.getText().length() > 18)
{
aux = "";
ftfPesquisa.setText("");
}
if(!cpf && !nome)
{
aux = ftfPesquisa.getText();
}
try
{
ftfPesquisa.setFormatterFactory(null); // desabilita a mascara aplicada
mascaraCPF.setPlaceholderCharacter(' '); //define o caracter temporário que sesá usado na mascara
ftfPesquisa.setFormatterFactory( new DefaultFormatterFactory(mascaraCNPJ));
ftfPesquisa.setValue(null);
if(cnpj) //esse verifica se o último combobox selecionado foi um cnpj, caso positivo ele busca o cnpj digitado antes
{
ftfPesquisa.setText(aux);
}
}
catch(Exception ec)
{
ec.printStackTrace();
}
cpf = false;
nome = false;
cnpj = true;
}