[RESOLVIDO]MaskFormatter

7 respostas
Furyeyes

Galera ajuda aee
Tenho um JFormattedField com mascara, exemplo cpf MaskFormatted("###.###.###-##");
Eu defini meu banco de dados com 11 espaços, então ele não lê o campo todo, minha dúvida é, se eu definir no banco de dados 14 espaços que são correspondentes aos ‘.’ e numeros ele vai reconhecer?
Ou preciso fazer um método pra retirar os pontos e traço e ai sim armazenar só os numeros

Valeu!

7 Respostas

F

Se no banco vc definir o cpf como String não tem nenhum problema salvar com pontos junto. Seu campo cpf no banco é numero? Acho que não faz muito sentido.

Furyeyes

Meu campo cpf no banco é VARCHAR(11), e sobre gravar com os pontos e traços que você disse, uma amiga disse que o banco não reconheceria e tal, ai eu nem testei se grava ou não, ai defini só 11 posições
Vou Fazer outra tabela, e colocar o cpf com mais posições e testar, se gravar com pontos e traço eu só arrumo isso, mas se não eu vou ter que fazer um método pra retirar esses caracteres que não são dígitos!
Mas valeu a ajuda felipeaps :smiley:

F

Caso queira armazenar somente os dígitos faça o seguinte:

MaskFormatter mask = new MaskFormatter("SUA MASCARA");
mask.setValueContainsLiteralCharacters(false);

Aí use o jFormattedTextField.getValue().toString(); para recuperar a String.

Se vc tem por exemplo uma mascara de telefone “([telefone removido]”, ele já te retorna [telefone removido].

Mas creio que não vai ter problemas em armazenar pontos e hífens não.

Furyeyes

Putz então utiilizando
mask.setValueContainsLiteralCharacters(false);

Ele já me dá só os número, que mão na roda, eu estava aqui já pensando em criar um método, pra pegar a string e ir tirando oque não for digito

Valeuu De novo!!!

Furyeyes

ow felipe, eu tentei fazer oque você disse, porém ele não deixa fazer, pede para trocar por getName ou getSize....
oque eu coloco...?

Hospede cliente = new Hospede();
			
			cliente.setNome(tnome.getText());
			cliente.setCpf(tcpf.getValue().toString());
			cliente.setIdade(Integer.parseInt(tidade.getText()));
			cliente.setTelefone(ttelefone.getValue().toString());
			cliente.setEnde(tendereço.getText());
			cliente.setNumero(Integer.parseInt(tnumero.getText()));
			cliente.setCompl(tcomplemento.getText());
			cliente.setCidade(tcidade.getText());
			cliente.setEstado(boxestado.getSelectedItem().toString());
			cliente.setQuarto(Integer.parseInt(tquarto.getText()));
Aqui eu faço oque você disse da mascara
masccpf = new MaskFormatter("###.###.###-##");			/* ## - Somente Numeros serão aceitos*/
			masccpf.setValueContainsLiteralCharacters(false);
F

Seu setCPF() nao recebe um inteiro não né?

Furyeyes

Já achei o erro
Falta de atenção mesmo, como eu tinha feito uns testes sem mascara, coloquei como JTextField e esqueci de colocar Formatted de volta, ai ele não reconhecia

Mas já testei e esta funcionando perfeitamente

Valeu mais uma vez!!!

Criado 15 de maio de 2012
Ultima resposta 17 de mai. de 2012
Respostas 7
Participantes 2