JFormattedTextField com erro! Mas aonde?

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!

Faltou import java.text.DecimalFormat;

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

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

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

Abraços

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

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

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.

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…

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.

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…

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.

[quote=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.[/quote]

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?

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.

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

Posta o fonte inteiro aí.

Valeu, agora funcionou! Hehehe
Muito Obrigado pela ajuda…