Duvida urgente - JTextField

3 respostas
T

Fala Galera,

Estou com um problema, preciso de um campo que:
1 - nao tenha tamanho fixo nem mascara
2 - permita apenas letras e espaços
3 - nao permita acentuacao e qualquer outro caractere

É por exemplo um campo nomeCliente, mas nao pode ter acento
Tentei usar mascara com o JFormattedTextField mas nao ficou legal, a mascara atrapalha ja que ela tem tamanho fixo, entao teria que ser com o JTextField mesmo
Ate agora consegui fazer tudo, o problema eh que o codigo abaixo permite acentos, como ç, á, é, outros...

JTextField nome = new JTextField();

  nome.addKeyListener(new KeyAdapter() {
       public void keyTyped(KeyEvent e) {
       char c = e.getKeyChar();
       if (!(Character.isLetter(c) ||
          (c == KeyEvent.VK_BACK_SPACE) ||
          (c == KeyEvent.VK_SPACE))) {
	e.consume();
       }
  }

Neste exemplo apenas Letras sao permitidas, alem das teclas backspace e a barra de espaço.
O problema eh que ele permite letras acentuadas, e eu não posso permitir, alguem sabe uma saida?

Valeu

3 Respostas

T
thiagot:
Fala Galera,

Estou com um problema, preciso de um campo que:
1 - nao tenha tamanho fixo nem mascara
2 - permita apenas letras e espaços
3 - nao permita acentuacao e qualquer outro caractere

É por exemplo um campo nomeCliente, mas nao pode ter acento
Tentei usar mascara com o JFormattedTextField mas nao ficou legal, a mascara atrapalha ja que ela tem tamanho fixo, entao teria que ser com o JTextField mesmo
Ate agora consegui fazer tudo, o problema eh que o codigo abaixo permite acentos, como ç, á, é, outros...

JTextField nome = new JTextField();

  nome.addKeyListener(new KeyAdapter() {
       public void keyTyped(KeyEvent e) {
       char c = e.getKeyChar();
       if (!(Character.isLetter(c) ||
          (c == KeyEvent.VK_BACK_SPACE) ||
          (c == KeyEvent.VK_SPACE))) {
	e.consume();
       }
  }

Neste exemplo apenas Letras sao permitidas, alem das teclas backspace e a barra de espaço.
O problema eh que ele permite letras acentuadas, e eu não posso permitir, alguem sabe uma saida?

Valeu

Você está no caminho certo. Em vez de Character.isLetter(c) (que pega a letra "á" por exemplo), use:
('A' <= c && c <= 'Z' || 'a' <= c && c <= 'z')
É meio brutal mas deveria funcionar.
T

Brigadao thingol, era tudo o que eu precisava, resolveu 100% meu problema!

Abraço

D

seria alguma coisa como:
http://www.guj.com.br/posts/list/32409.java

Criado 23 de maio de 2006
Ultima resposta 23 de mai. de 2006
Respostas 3
Participantes 3