Limitando os caracteres a serem inseridos em uma jTextField

Galera, Segue uma que tá me matando:

Tenho uma textField e preciso limitar a entrada dela a apenas alguns caracteres.

Por ex.: O usuário só pode digitar os caracteres 123abc±=

Qualquer outra entrada deve ser simplesmente ignorada pelo sistema.

A textfield não pode ter limite de tamanho.

Conto mais uma vez com a colaboração de vocês!

obs.: Nem rola teclado virtual…

Valew!

http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html#filter

O exemplo dado é para limitar o número de caracteres, mas você pode mudar o exemplo para filtrar caracteres indesejados.

[quote=thingol]http://java.sun.com/docs/books/tutorial/uiswing/components/generaltext.html#filter

O exemplo dado é para limitar o número de caracteres, mas você pode mudar o exemplo para filtrar caracteres indesejados.[/quote]

Thingol, valew pela dica. vou dar uma olhada e falo se rolou…

Não sei se é o seu caso, mais vai ai outro tutorial.

T+

[quote=diego2005]Não sei se é o seu caso, mais vai ai outro tutorial.

T+[/quote]

Galera, brigado pela força mas n funfo.
:frowning:

Pode ser noobice minha mas, ta osso!

Já fiz N tentativas… alguém pode passar tipo um pré-código??

VALEW!

Galera, segue o código q to apanhando.

[code] private void tVisorKeyPressed(java.awt.event.KeyEvent evt) {
testeEntrada teste = new testeEntrada();

    teste.teste1(evt.getKeyChar());
}                                 [/code]

[code]package itcv03;

import javax.swing.JOptionPane;

public class testeEntrada
{
public boolean n1;
public boolean n2;
public boolean e;
public boolean p1;
public boolean p2;
public boolean signal;
public char b = '[code]package itcv03;

import javax.swing.JOptionPane;

public class testeEntrada
{
public boolean n1;
public boolean n2;
public boolean e;
public boolean p1;
public boolean p2;
public boolean signal;
public char b = ‘\0’;

public char teste1(char a)
{
    if(a == '0')
    {
        if(n1 == false)
        {
            return b;
        }

        else if(n1 == true && e == false)
        {
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '1')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '2')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '3')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '4')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '5')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '6')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '7')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '8')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '9')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == 'e')
    {
        if(n1 == true && e == false)
        {
            e = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '.')
    {
        if(p1 == false && e == false && n1 == true)
        {
            p1 = true;
            n1 = false;
            return a;
        }

        else if(p2 == false && n2 == true)
        {
            p2 = true;
            n2 = false;
            return a;
        }

        else
            return b;
    }

    else if(a == '+' || a == '-')
    {
        if(e == true && n2 == false && signal == false)
        {
            signal = true;
            return a;
        }

        else
            return b;
    }

    else
    {
        JOptionPane.showMessageDialog(null, "erro");
        return b;
    }
}

}
[/code]’;

public char teste1(char a)
{
    if(a == '0')
    {
        if(n1 == false)
        {
            return b;
        }

        else if(n1 == true && e == false)
        {
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '1')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '2')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '3')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '4')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '5')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '6')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '7')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '8')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '9')
    {
        if(n1 == false)
        {
            n1 = true;
            return a;
        }

        else if (n1 == true && e == true && n2 == false)
        {
            n2 = true;
            return a;
        }

        else
            return b;
    }

    else if(a == 'e')
    {
        if(n1 == true && e == false)
        {
            e = true;
            return a;
        }

        else
            return b;
    }

    else if(a == '.')
    {
        if(p1 == false && e == false && n1 == true)
        {
            p1 = true;
            n1 = false;
            return a;
        }

        else if(p2 == false && n2 == true)
        {
            p2 = true;
            n2 = false;
            return a;
        }

        else
            return b;
    }

    else if(a == '+' || a == '-')
    {
        if(e == true && n2 == false && signal == false)
        {
            signal = true;
            return a;
        }

        else
            return b;
    }

    else
    {
        JOptionPane.showMessageDialog(null, "erro");
        return b;
    }
}

}
[/code]

Veja se assim funciona:

  1. Crie uma classe que extende de PalinDocument

[code]private class In extends PlainDocument {//Desculpa, foi a primeira coisa que veio a cabeça, In…Que isso hen???

    private String caracters = "123abc=+";//outros caracteres que deseje

    @Override
    public void insertString(int offset, String str, AttributeSet attr)   throws BadLocationException {

        if (caracters.contains(str)) {
            super.insertString(offset, str, attr);
        }

    } 
}[/code]
  1. Crie um JTextField
JTextField field = new JTextField();
  1. Agora é so setar a classe que vc criou ao Document deste JTextField
field.setDocument(new In());

Veja se ajuda…

Att.

[quote=71C4700]Veja se assim funciona:

  1. Crie uma classe que extende de PalinDocument

[code]private class In extends PlainDocument {//Desculpa, foi a primeira coisa que veio a cabeça, In…Que isso hen???

    private String caracters = "123abc=+";//outros caracteres que deseje

    @Override
    public void insertString(int offset, String str, AttributeSet attr)   throws BadLocationException {

        if (caracters.contains(str)) {
            super.insertString(offset, str, attr);
        }

    } 
}[/code]
  1. Crie um JTextField
JTextField field = new JTextField();
  1. Agora é so setar a classe que vc criou ao Document deste JTextField
field.setDocument(new In());

Veja se ajuda…

Att.[/quote]

Cara, MUITO OBRIGADO! FUNFO!

fica ai registrado para quem venha a ter a mesma dúvida.

o que que eu tenho que importar pra essa classe funfa?

[quote=Adesbh][quote=71C4700]Veja se assim funciona:

  1. Crie uma classe que extende de PalinDocument

[code]private class In extends PlainDocument {//Desculpa, foi a primeira coisa que veio a cabeça, In…Que isso hen???

    private String caracters = "123abc=+";//outros caracteres que deseje

    @Override
    public void insertString(int offset, String str, AttributeSet attr)   throws BadLocationException {

        if (caracters.contains(str)) {
            super.insertString(offset, str, attr);
        }

    } 
}[/code]
  1. Crie um JTextField
JTextField field = new JTextField();
  1. Agora é so setar a classe que vc criou ao Document deste JTextField
field.setDocument(new In());

Veja se ajuda…

Att.[/quote]

Cara, MUITO OBRIGADO! FUNFO!

fica ai registrado para quem venha a ter a mesma dúvida.[/quote]

Pessoal esse código funcionou perfeitamente quando se está digitando os caracteres no campo, porem eu to com uma rotina que quando o usuario digita um CEP eu retorno o endereço, bairro, cidade e uf.
Só que com esse codigo restringe o resultado.
O que poderia ser alterado para que ele aceite o valor de retorno da consulta?
Grato!

Tide…

passar como parametroa o construtor o valor da String que voce deseja permitir…

[code]

String suaString = Objeto.fazConsulta(); //Alguma coisas do Banco
field.setDocument(new In(suaString)); [/code]

E no contrutor da Classe In…

public In(String follow){ this.caracters = follow; }

E o restante do código continuaria igual…