Como utilizar o componente JTextField para aceitar apenas números ou apenas letras

Veja neste artigo como restringir a digitação de caracteres indesejáveis num componente JTextField, melhorando a segurança de entrada de informações numa aplicação Java

 

Muitas vezes num formulário de entrada de dados construída através dos elementos do swing, precisamos restringir a digitação de determinados caracteres. Existe o elemento JFormattedTextField, que nos permite utilizar máscaras no campo, mas com um simples JTextField podemos colocar algumas restrições. Por exemplo, num campo de entrada do nome de uma pessoa, com o evento KeyTyped podemos evitar a digitação de números. Ou num campo idade, podemos evitar a digitação de qualquer outro caractere que não seja número. Dessa forma, já estamos fazendo uma validação na hora da digitação.

Vamos ver esse exemplo de uma forma prática. Segue abaixo um frame construído no Eclpise com o WindowBuilder, que é um plugin utilizado para desenvolver classe de interface gráfica.

Exemplo de tela de entrada

 TextFieldFigura1

 

 

 

 

 

 

 

 

 

Figura 1: Tela de entrada de dados

 

Na tela acima, utilizando o Eclipse, podemos incluir um evento KeyTyped no TextField para o nome. Fazemos isso clicando com o botão direito Add Event Handler / Key / KeyTyped, como mostra a Figura 2.

 

Passos para incluir o evento KeyTyped

TextFieldFigura2

Figura 2: Incluindo o evento no textfield para o campo nome.

 

O código para inibirmos a digitação de números fica assim:

String caracteres=”0987654321″;

if(caracteres.contains(ev.getKeyChar()+””)){

// se o caractere digitado for um contido na String caracteres

ev.consume(); // o caractere é removido através do método consume

}

 

Portanto, o código ficará como abaixo:

 

textField = new JTextField();

textField.addKeyListener(new KeyAdapter() {

@Override

public void keyTyped(KeyEvent ev) {

// código do evento:

String caracteres=“0987654321”;

       if(caracteres.contains(ev.getKeyChar()+“”)){

              ev.consume();

       }

}

});

textField.setBounds(139, 26, 233, 21);

contentPane.add(textField);

textField.setColumns(10);

 

Restringindo a entrada de letras

 

Para restringirmos a entrada de outro caractere que não seja número no campo idade, fazemos o mesmo processo, colocando o operador not (!) na estrutura condicional. Dessa maneira será removido qualquer caractere que não seja o que está na String caracteres.

 

public void keyTyped(KeyEvent ev) {

// código do evento:

String caracteres=“0987654321”;

       if(!caracteres.contains(ev.getKeyChar()+“”)){

              ev.consume();

       }

}

});

 

 

Conclusão

 

Vimos nesse artigo como podemos, utilizando o simples JTextField, restringir a entrada de caracteres indesejáveis para a nossa aplicação.

 

Sobre perini

José Carlos Perini publicou 50 posts no seu blog.

Professor universitário Faculdade Metrocamp e People Computação Oracle Certified Professional, Java SE 6 Programmer

You can leave a response, or trackback from your own site.

5 Responses to “Como utilizar o componente JTextField para aceitar apenas números ou apenas letras”

  1. Fernando disse:

    Ótimo…

  2. Diego disse:

    esse ” ev ” o que é isso?… aqui acusa que não existe a classe, eu tento importar e não tem nada.. 😐

    • perini disse:

      Olá Diego.
      ev é um objeto da classe KeyEvent que é recebido pelo método keyTyped, na linha abaixo.
      Na realidade esse objeto guardará a tecla que foi digitada.

      public void keyTyped(KeyEvent ev) {

  3. Danilo disse:

    Muito bom e fácil de usar!

  4. jadir xavier dias disse:

    Muito bom. Obrigado pela ajuda.

Leave a Reply