Como copiar campo sem formatação de um JFormattedTextField?

Boa tarde.

Em meu “sisteminha” de trabalho da faculdade, coloquei em uma tela um campo formatado (JFormattedTextField) para uma exibição um pouco mais elegante de um CNPJ.

No entanto, pela orientação do professor de banco de dados, não é o correto enviar para o banco um campo com formatação, para evitar dor de cabeça no futuro se tiver que mandar esses dados para receita, onde os campos vão sem formatação.

Claro que meu “sisteminha” não irei mandar nada para receita, mas para que fique correto e tenha uma boa exibição, estou tentando mostrar formatado e guardar não formatado.

Fiz um teste aqui, para mandar um dado (de uma variável por exemplo) para um JFormattedTextField, ele aplica a formatação. Mas para fazer o inverso, pensava eu que a formatação era apenas visual, mas não, ao copiar o conteúdo a formatação vai junto.

Procurei na net, mas o que encontro é pessoal querendo aplicar a formatação e não o contrário.

Consegui fazer aqui, mas usando o replaceAll. Achei que por ser um campo que trabalhe com formatação teria um método próprio para adquirir o campo sem formatação.

String variavelQualquer.setText(txtCNPJ.getText().replaceAll("[., /, -]", ""));

Gostaria de saber se há algo direto para fazer isso, ou se cada campo formatado que eu fizer terei que fazer um replaceAll para cada também. No momento não irei usar tanto assim, mas foi uma dúvida que surgiu e gostaria de sanar para que, sei lá, no futuro ao me deparar novamente com o problema não ficar “perdendo” tempo.

Agradeço.

Ola,

Tente assim:

try {
			final MaskFormatter mask = new MaskFormatter("###.###.###-##");
			mask.setValueContainsLiteralCharacters(false);
			this.cpf = new JFormattedTextField(mask);
		} catch (final ParseException e) {
			e.printStackTrace();
		}

Valeu, obrigado… vou tentar.

Eu também utilizo replaceAll com os campos JFormattedTextField, porém o meu uso com eles é muito raro, uma outra alternativa é você criar um método pra fazer esse tipo de operação pra você e evitar o uso do replaceAll toda vez que precisar recuperar um valor sem a formatação.

Jonathan_Medeiros, é o exatamente o que eu estava pensando em fazer.

Como eu disse, achei que o fato do campo trabalhar com formatação tivesse/deveria ter um método próprio para recuperar sem formatação.

No entanto, usar o replaceAll não é trabalhoso também.

Enfim…

Obrigado pela atenção.

1 curtida