Limitar os caracteres aceitos em um JTextField

Boa tarde colegas !

Preciso limitar os caracteres que serão aceitos em um JTextField, por exemplo, só números para telefone, CPF, etc…

Como vocês sugerem que eu faça isso ?

Obrigado a todos.

Um abraço.

[color=darkred]Antes o tópico tinha o título vago: Como sugerem que eu faça isso ? [/color]

vc pode usar um jformattedtextfield e usar mascara para fazer isso, ou então criar um Document (herdando de painDocument) e fazendo o tratamento dos caracteres manualmente…

Boa tarde colegas !

mchiareli:

Comecei trabalhando com JFormattedTextField, mas diante de algumas dificuldades, talvez por inexperiencia minha, optei por seguir os conselhos de outros colegas aqui do GUJ e estou usanto JTextField mesmo…

No caso de datas, numeros de telefone e CPF, por exemplo, criei classes que herdam de InputVerifier para fazer as validações e formatações.

E em cada objeto JTextField faço algo mais ou menos assim:

telefoneResidencial.setInputVerifier(new TelefoneInputVerifier());

O meu problema agora é o seguinte:
Estou permitindo que o usuário digite, por exemplo, letras num campo data.
No momento que mudar o foco para outro objeto a minha classe vai criticar o dado digitado, mas queria que nem permitisse a digitação.

Se puder me ajudar fico muito grato.

Um abraço.

vc pode criar um Document herdando de PlainDocument, sobreescreva o metodo

insertString(int offSet,String str,AttributeSet attr)

str eh a string que está sendo inserida, vc faz a validação nela por exemplo se ewh um numero, ae vc insere ele no JTextFiel chamando o metodo na class pai

super.insertString(int offset, String str, AttributeSet att)

para setar isso no jtextfiel vc faz

text.setDocument(document) , document eh a classe que vc criou…

Segue um tutorial: Controlando um JTextField

T+

Boa noite colegas !

Inicialmente muito obrigado pelas dicas… utilizar PlainDocument realmente funcionou certinho para limitar o tamanho do jTextField.

Agora, no caso de querer limitar também os caracteres digitados, por exemplo, só numeros, como sugerem que eu faça ?

Minha primeira idéia foi verificar através do parametro str, do método
insertString…

Mas aí fiquei com uma dúvida de como seria a melhor maneira de implementar, faço um if com os caracteres que devem ser aceitos ?
Por exemplo, para um JTextField que deva aceitar somente números:


    public void insertString(int offset, String str, AttributeSet attr)
                            throws BadLocationException    {
       
        if (str == null) return;

        if (str.equals("1") ||
            str.equals("2") ||
            str.equals("3") ||
            str.equals("4") ||
            str.equals("5") ||
            str.equals("6") ||
            str.equals("7") ||
            str.equals("8") ||
            str.equals("9") ||
            str.equals("0")
                ) {     
           super.insertString(offset, newStr, attr);

etc, etc, etc

Tenho quase certeza de que esse não é o melhor jeito… rsrsrs

Obrigado a todos.

[]s