dae no meu cadastro, eu chamo essa classe de mascara usando jformatedtextfield da seguinte maneira …
jFormattedTextField1 = new JFormattedTextField( Mascara.TipoMascara.CGC );
mas ao inves de me retornar a mascara de cgc - ("##.###.###/####-##"); - retorna a palavra “CGC” …
o que esta de errado no meu codigo que nao quer aparecer a mascara …
Está certo acontecer isso mesmo, vc está chamando o construtor do componente JFormattedTextField o Enum que vc criou, ele não vai conseguir adivinhar para você qual mascara você quer usar a partir do enum, você precisa chamar o metodo getMascara() que você criou, porque lá vc retorna a mascara de acordo com cada enum ficando assim:
Mascara m = new Mascara();
new JFormattedTextField(m.getMascara(Mascara.TipoMascara.CEP));
Blz…
Acho que é isso…
ViniGodoy
O mais elegante seria você declarar as máscaras dentro do seu enum:
explicando, o que quero fazer no textfield1 passo o parametro que quero, nesse caso, “UPPER”, pra que o que seja digitado fique maiusculo (vejo isso no switch) - mas ele esta passando pelos 3 casos - NONE, UPPER, LOWER - ou seja, sempre vai retornar como lower, por ser o ultimo …
o que eu faco, tentei trocar o switch por if e tambem nao deu certo …
ViniGodoy
Faltou break no seu switch.
switch (formata) {
case NONE:
str = str ; //str.trim() ;
break;
case UPPER:
str = str.toUpperCase();
break;
case LOWER:
str = str.toLowerCase();
break;
}
Mas, novamente, você está subaproveitando o enum.
Via de regra, fuja do switch!!! Quando possível, use o polimorfismo. Dá uma olhada no link que eu passei ali em cima e vê se consegue refatorar esse seu código.
Dá uma olhada no link lá em cima para mais explicações.
M
marcoscorso
estou com um problema para definir o tamanho de caracteres digitados num textfield…
usei o seguinte :
if(this.getLength()==total){
return;}
onde “total” eu passo via parametro …
mas tem um problema, defini “total” como 5, se eu digitar “1234” , copiar “123”, e colar, ele deixar colar, nao veta os 5 de tamanho maximo, o que posso fazer pra corrigir isso ??
jTextField1.setDocument( new Validacao(10, Validacao.letras.NONE ) );
jTextField2.setDocument( new Validacao(20, Validacao.letras.UPPER ) );
jTextField3.setDocument( new Validacao(30, Validacao.letras.LOWER ) );
o “10”,“20”,“30” eh o tamanho maximo de caracteres, o “NONE” pra formatar o campo … mas ele esta aceitando apenas o ultimo, ou seja, todos os textfield …
ViniGodoy
Tem cheiro de que algum atributo dentro da sua classe Validacao é estático. Se for, faça-o deixar de ser.
Se não for isso, anexa o código da classe num post aí pra gente dar uma olhada…
M
marcoscorso
sobre a ultima duvida deu certo …
estavam mesmo como static, mudei para public e cada textfield ficou com sua devida validacao …
obrigado novamente
M
marcoscorso
ola
a mascara deu certo, esta funcionando …
mas ela fica aparecendo assim : " . - " no caso do cep …
tem como mudar os espacos em branco por "" ??
procurei algo sobre " .setPlaceholderCharacter(’’); " mas nao sei como implementar isso no meu codigo …