Após algumas pesquisas na net em busca de uma solução para permitir apenas textos em letras maiusculas no JTextField do Java, a solução que mais me agradou foi essa.
Clique com o botão direto no mouse sobre o JTextFiled, vá na opção eventos\key\KeyReleased. Ele irá gerar o código inicial para o evento. Altere o mesmo para que fique da seguinte forma:
private void JTextField1KeyReleased(java.awt.event.KeyEvent evt) { if (evt.getKeyCode()!=32 & evt.getKeyCode()!=8 & evt.getKeyCode()!=37 & evt.getKeyCode()!=39) //JOptionPane.showMessageDialog(null, evt.getKeyCode(),"Código da tecla", 0); JTextField1.setText(JTextField1.getText().toUpperCase()); }
Aprimorando o código para que não seja necessário mudar para cada componente:
private void tf_NomeKeyReleased(java.awt.event.KeyEvent evt) { JTextField tf = (JTextField) evt.getComponent(); if (evt.getKeyCode()!=32 & evt.getKeyCode()!=8 & evt.getKeyCode()!=37 & evt.getKeyCode()!=39) tf.setText(tf.getText().toUpperCase()); }
Agora, a cada tecla pressionada, o caracter será convertido para maiuscula e o cursor irá para o final do texto.
Por isso é necessário tratar a entra. Caso a tecla seja espaço, back space, seta para frente e seta para tráz, nada é feito.
Caso queira que outra tecla seja ignorada e não sabe o número, basta descomentar a terceira linha do código que o número correspondente será exibido.
Claudir Pereira dos Santos
Matelândita, 20 de outubro de 2009.
Nenhum comentário:
Postar um comentário