Question

Je suis un JTextField, et ce domaine, j'ai ajouté un Keylistener. Dans la méthode de keyPressed, je demande à la méthode d'impression (System.out.println) ce qui est à l'intérieur du JTextField .. Si je frappe une lettre, il semble que le Keylistener reçoit cette clé touchée avant la JTextField est mis à jour .. Je dois frapper deux lettres voir le premier ..

Tout ce que je dois faire est de faire en majuscules toutes les lettres qu'ils sont entrés .. Ce que je suis en train de le faire en écoutant toutes les clés (j'écoute également sur la touche ENTRER pour d'autres raisons), puis faire un textfield.setText(textfield.getText().toUpperCase());

Était-ce utile?

La solution 2

Je sais que pas si populaire pour répondre à votre propre question .. mais je suppose que j'ai trouvé la solution .. Au lieu de faire tout le boîtier supérieur dans la méthode keyPressed, je le fais dans le keyReleased:)

Autres conseils

Utilisez un DocumentFilter de modifier le texte tel qu'il vient.

Pas la plus jolie source et ce n'est pas 100% correct, juste montrer comment cela fonctionne. Voir l'original

((AbstractDocument)textField.getDocument()).setDocumentFilter(new UppercaseDocumentFilter());

  class UppercaseDocumentFilter extends DocumentFilter {
        public void insertString(DocumentFilter.FilterBypass fb, int offset,
                                 String text, AttributeSet attr)
                throws BadLocationException {

            fb.insertString(offset, text.toUpperCase(), attr);
        }

        public void replace(DocumentFilter.FilterBypass fb, int offset, int length,
                            String text, AttributeSet attrs)
                throws BadLocationException {

            fb.replace(offset, length, text.toUpperCase(), attrs);
        }
    }

Essayez d'utiliser le document sous-jacent:

textfield.getDocument().addDocumentListener(yourListener);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top