JFormattedTextField com erro! Mas aonde?

17 respostas
M

Olá pessoal, tudo jóia com todos?

Bom eu mais uma vez estou aqui precisando da ajuda de vocês. Eu tenho uma JTextField e eu gostaria de fazer uma formatação nele deste tipo

JFormattedTextField jTextField7 = new JFormattedTextField(new DecimalFormat("(0##)####-####"));

Mas está dando erro, diz que:

Can not find the symbol
Symbol: class DecimalFormat

Alguém poderia dar uma olhada neste trecho e ver o que pode estar errado?

Um grande abraço a todos!

17 Respostas

Rodrigo_Manhaes

Faltou import java.text.DecimalFormat;

M

Valeu Rodrigo…

Mas deu um outro erro agora:

Exception in thread “main” java.lang.IllegalArgumentException: Malformed pattern “(0##)####-####”

Ai, para este erro eu tirei o zero e coloquei # e quando eu fui fazer o teste, a mascara não apareceu! :frowning:

Alguma outra dica?

Abração

T

Você está confundindo “DecimalFormat” com “MaskFormat”.

M

Mas no lugar de DecimalFormat eu coloco Mask Format? Ou eu tenho que falzzer alguma outra coisa?

Abraços

Rodrigo_Manhaes

É só substituir DecimalFormat por MaskFormatter. DecimalFormat é para formatação de números e não para máscaras de entrada de dados.

M

Po Rodrigo, eu troquei o DecimalFormat por MaskFormatter mas não deu certo…

Olha só…

import java.text.MaskFormatter.*;

.
.
.

JFormattedTextField jTextField7 = new JFormattedTextField(new MaskFormatter("(###)####-####"));

AI está eu não sei onde eu estou errando…
Bom de qualquer forma valeu pela ajuda
Abraço

Rodrigo_Manhaes

O import está errado. Substitua por

Você está utilizando alguma IDE? Se não está, eu aconselho que use. O Eclipse, por exemplo, automatiza os imports.

M

Eu uso o netBeans 4.1
Bom fiz as alterações, mas nada ainda…
Tipo está dando esta mensagem:

Unreported exception java.text.ParseException; must be caught or declared to be thrown

Como se eu não tivesse declarado algo. Mas está tudo declarado.
Cara valeu mesmo pela ajuda… Espero não estar te atrapalhando…

Rodrigo_Manhaes

Você precisa escrever um bloco try para executar o construtor do MaskFormatter.

try { JFormattedTextField jTextField7 = new JFormattedTextField(new MaskFormatter("(###)####-####")); } catch (java.text.ParseException e) { e.printStackTrace(System.err); }

Mais detalhes em http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/MaskFormatter.html.

M

Putz cara, eu alterei aqui mas não está dando certo…
Pelo o que eu queria, num tinha que aparece na TextField algo do tipo?
( ) -

Bom valeu pela ajuda…

Rodrigo_Manhaes

Vou enviar um exemplo completo pra ver se te ajuda. É um método que retorna um JFormattedTextField já acertado pra trabalhar com validação de CPF.

public static JFormattedTextField getCPFField() { MaskFormatter mask = getMaskFormatter("###.###.###-##"); mask.setValueContainsLiteralCharacters(false); mask.setPlaceholderCharacter('_'); JFormattedTextField field = new JFormattedTextField(mask); field.setInputVerifier(verifier); return field; }
A função getMaskFormatter é mostrada abaixo:

public static MaskFormatter getMaskFormatter(String mask) { try { return (mask != null) ? new MaskFormatter(mask) : new MaskFormatter(); } catch (ParseException e) { return null; } }
Para efeito de espaço, não incluí o código para validação do conteúdo, apenas o código para a máscara.

Rodrigo_Manhaes

Rodrigo Manhães:
Vou enviar um exemplo completo pra ver se te ajuda. É um método que retorna um JFormattedTextField já acertado pra trabalhar com validação de CPF.

public static JFormattedTextField getCPFField() { MaskFormatter mask = getMaskFormatter("###.###.###-##"); mask.setValueContainsLiteralCharacters(false); mask.setPlaceholderCharacter('_'); JFormattedTextField field = new JFormattedTextField(mask); return field; }
A função getMaskFormatter é mostrada abaixo:

public static MaskFormatter getMaskFormatter(String mask) { try { return (mask != null) ? new MaskFormatter(mask) : new MaskFormatter(); } catch (ParseException e) { return null; } }
Para efeito de espaço, não incluí o código para validação do conteúdo, apenas o código para a máscara.

M

Valeu Rodrigo, só mais uma coisa para fechar este assunto. Este método getCPFField() é um método que verifica o cpf certo? Então, onde eu tenho que chama-lo?

Rodrigo_Manhaes

Este método simplesmente retorna um JFormattedTextField com a máscara para o CPF, mas não verifica se é um CPF válido. O que ele faz é certificar que você digitará somente números e forçar a digitação dentro da máscara. Para a validação você pode usar um InputVerifier.

M

Ah legal… Agora eu saquei… HEheheh
Acho que vc deve estar achando que eu estou de sacanagem, mas o código que você me passou não funciona. O erro ocorre na primeira linha

public static JFormattedTextField getCPFField()

e dá o seguinte erro:

illegal start expression;

E ahora, que fazer?

Abraços

Rodrigo_Manhaes

Posta o fonte inteiro aí.

M

Valeu, agora funcionou! Hehehe
Muito Obrigado pela ajuda…

Criado 3 de maio de 2006
Ultima resposta 5 de mai. de 2006
Respostas 17
Participantes 3