Foros del Web » Programación para mayores de 30 ;) » Java »

Expediente X con los eventos en jtextfield

Estas en el tema de Expediente X con los eventos en jtextfield en el foro de Java en Foros del Web. 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). ...
  #1 (permalink)  
Antiguo 17/10/2008, 01:55
 
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!
  #2 (permalink)  
Antiguo 17/10/2008, 08:36
Avatar de victor666  
Fecha de Ingreso: junio-2007
Mensajes: 39
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Expediente X con los eventos en jtextfield

pregunta? ya provaste con el metodo keyReleased(){} en ves del keyType(){}
  #3 (permalink)  
Antiguo 18/10/2008, 03:05
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Expediente X con los eventos en jtextfield

victor666 muchas gracias!!

he probado con el keyreleased y funciona a la primera!!!
qué diferencia hay entre keytyped y keyreleased??? esq era raro porque era la primera tecla la que no cogía, las demás sí...

muchas gracias de nuevo!!!
  #4 (permalink)  
Antiguo 18/10/2008, 09:32
Avatar de victor666  
Fecha de Ingreso: junio-2007
Mensajes: 39
Antigüedad: 16 años, 10 meses
Puntos: 0
Respuesta: Expediente X con los eventos en jtextfield

La razon es que el evento KeyReleased se ejecuta inmediatamente despues de que la tecla es soltada y no vigila nada mas, y el KeyType escucha los dos procesos, cuando la tecla es pesionada y soltada.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:29.