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