Keylistener recibe el "golpe de llave" antes de que mi jtextfield lo haga ...?
-
24-09-2019 - |
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());
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);