Pregunta

Conseguí un JTextField, y a ese campo he agregado un Keylistener. Dentro de keyPressed Método, le pido al método para imprimir (System.out.println) que hay dentro del JTextField.. Si golpeé una carta, parece como el Keylistener recibe este golpe de llave antes del JTextField está actualizado ... Tengo que golpear dos letras para ver la primera.

Todo lo que necesito hacer es hacer cada letra superior a medida que se ingresan ... esto estoy tratando de hacer escuchando cada clave (también escucho la clave Enter por otras razones) y luego hago un textfield.setText(textfield.getText().toUpperCase());

¿Fue útil?

Solución 2

Sé que no es tan popular responder a tu propia pregunta ... pero supongo que encontré la solución ... en lugar de hacer todas las casas superiores en el método clave, lo hago en la tecla Relevante :)

Otros consejos

Utilizar una DocumentFilter para alterar el texto a medida que entra.

No es la fuente más bonita y no es 100% correcta, solo muestra cómo funciona. Vea el original aquí

((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);
        }
    }

Intente usar el documento subyacente:

textfield.getDocument().addDocumentListener(yourListener);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top