Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/10/2008, 01:55
xayide
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 2 meses
Puntos: 0
Expediente X con los eventos en jtextfield

Hola a todos!

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:
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;
	}
y aquí la salida que produce:

Cita:
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
Muchas gracias!