Tengo un expediente x con los eventos de un jtextfield. Lo que hago es introducir 9 caracteres (el dni de una persona). Quiero que al introducir el noveno caracter busque en la base de datos a quién corresponde ese dni y me lo escriba en un jlabel que tengo debajo del jtextfield.
Para limitar el jtextfield a 9 caracteres utilizo un jformattedtextfield. Luego escucho los eventos keytyped y cuando se han producido 9 eventos de este tipo supongo que será porque se han tecleado 9 caracteres.
Sin embargo, cuando escribo el primer caracter, se produce el evento keytyped pero la longitud del string es 0!!!!!
Pongo el código y la salida que produce para ver si alguien me puede decir qué es lo que está pasando.
Código:
y aquí la salida que produce:private JFormattedTextField getDni() { if (dni == null) { try{ MaskFormatter mf1 = new MaskFormatter("#########"); dni = new JFormattedTextField(mf1); dni.setBounds(new Rectangle(108, 27, 178, 32)); dni.addKeyListener(new KeyAdapter(){ public void keyTyped(KeyEvent evt){ i++; System.out.println("i:"+i); System.out.println("keytyped_longitud:"+dni.getText().trim().length()); if(dni.getText().trim().length()==9){ System.out.println("entro en 9"); buscarNombre(evt); } if((i>9)&&(dni.getText().trim().length()<9)){ //está escribiendo dni otra vez nombre.setText(""); } }); }catch(Exception ex){ System.out.println(ex.getMessage()); } } return dni; }
Cita:
Muchas gracias! keypressed0
i:1
keytyped_longitud:0
keypressed1
i:2
keytyped_longitud:1
keypressed2
i:3
keytyped_longitud:2
keypressed3
i:4
keytyped_longitud:3
keypressed4
i:5
keytyped_longitud:4
keypressed5
i:6
keytyped_longitud:5
keypressed6
i:7
keytyped_longitud:6
keypressed7
i:8
keytyped_longitud:7
keypressed8
i:9
keytyped_longitud:8
i:1
keytyped_longitud:0
keypressed1
i:2
keytyped_longitud:1
keypressed2
i:3
keytyped_longitud:2
keypressed3
i:4
keytyped_longitud:3
keypressed4
i:5
keytyped_longitud:4
keypressed5
i:6
keytyped_longitud:5
keypressed6
i:7
keytyped_longitud:6
keypressed7
i:8
keytyped_longitud:7
keypressed8
i:9
keytyped_longitud:8