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

Problema evento focuslost

Estas en el tema de Problema evento focuslost en el foro de Java en Foros del Web. Hola amigos tengo un problema, es que quiero hacer una condición donde varios campos sean obligatorios entonces lo hice por medio del evento focuslost de ...
  #1 (permalink)  
Antiguo 13/03/2010, 17:04
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Problema evento focuslost

Hola amigos tengo un problema, es que quiero hacer una condición donde varios campos sean obligatorios entonces lo hice por medio del evento focuslost de java, para cuando me haya metido no pueda salir sino he ingresado un dato hago lo siguiente.

Código JAVA:
Ver original
  1. private void getMayNombres(java.awt.event.FocusEvent evt) {
  2.          jtxtNombres.setText(jtxtNombres.getText().toUpperCase());
  3.          if(jtxtNombres.getText().length()==0)
  4.            {
  5.              getToolkit().beep();
  6.              jtxtNombres.grabFocus();
  7.              lblONom.setText("Campo Obligatorio");
  8.            }
  9.     }
  10.  
  11.     private void getMayDoc(java.awt.event.FocusEvent evt) {
  12.           jtxtDocumento.setText(jtxtNombres.getText().toUpperCase());
  13.          if(jtxtNombres.getText().length()==0)
  14.            {
  15.              getToolkit().beep();
  16.              jtxtDocumento.grabFocus();
  17.              lblODoc.setText("Campo Obligatorio");
  18.            }
  19.     }

el problema es que por ejemplo si yo estoy en el campo jtxtNombres y le doy clic sin llenar jtxtNombres en el siguiente que tengo con esta condicion por ejemplo jtxtDocumento el cursor me queda parpadeando en ambas cajas de texto como hago para que no pase esto?, como hago para que despues de hacer la validacion del primer campo cancele el evento donde dejo el focus para que no me pase a comparar otro o como hago para que no suceda esto

muchas gracias amigos mios.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #2 (permalink)  
Antiguo 14/03/2010, 13:35
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Problema evento focuslost

Alguien sabe algo?? ayuda, auxilio.....
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #3 (permalink)  
Antiguo 14/03/2010, 13:50
MIRL27
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema evento focuslost

Usa un chivato y agrégalo a la condición. Es cutre pero en principio funcionaría:

int campoIncompleto = -1;

...

if (jtxtNombres.getText().length()==0 && campoIncompleto==1 || campoIncompleto == -1)
{ ... campoIncompleto = 1; } else { campoIncompleto = -1; }

...

if(jtxtNombres.getText().length()==0 && campoIncompleto==2 || campoIncompleto ==-1)
{ ... campoIncompleto = 2; } else { campoIncompleto = -1; }



Espero que te sirva ^^
  #4 (permalink)  
Antiguo 14/03/2010, 14:53
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Problema evento focuslost

seria buena idea jejejejeje muy chevere su solucion, hay que ser recursivos pero igual deveria a ver una forma que no sea esa, pero muchas gracias parcero se le agradece.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #5 (permalink)  
Antiguo 14/03/2010, 15:19
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Problema evento focuslost

Parcero no pude o si pero no puedo volverlo dinamico para llamar el metodo y ya, le agradezco que me ayude o si hay una mejor forma de hacerlo muchas gracias.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #6 (permalink)  
Antiguo 14/03/2010, 15:55
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: Problema evento focuslost

Si realmente quieres controlar los campos obligatorios, diria yo, que seria mejor no hacerlo uno a uno, sino por ejemplo, si es un formulario y al final tienes un botón de enviar, que éste haga las comprobaciones sobre los campos, antes de hacer X cosa.
  #7 (permalink)  
Antiguo 14/03/2010, 21:24
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Problema evento focuslost

Lo que yo veo es que te falta es cancelar el evento si no es valido y evitar que el JTextField no pierda el foco.

Usa este metodo del Evento cuando no sea valido, asi cancelaras la perdida del foco del JTextField.

Código PHP:
evt.consume(); 
Saludos...
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #8 (permalink)  
Antiguo 15/03/2010, 14:11
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Problema evento focuslost

el problema es que no lo tiene.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co
  #9 (permalink)  
Antiguo 16/03/2010, 20:17
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Problema evento focuslost

Acabo de revisar bien el codigo, y me doy cuenta que no veo como estas agregando el listener del jtxtNombres...

En teoria deberia ser así...

1. Creas la instancia del JTextField
2. Agregas el Listener que implementa la interface java.awt.event.FocusListener

Código PHP:
// Debes agregar el Listener que implementa FocusListener,En este caso estoy usando el Adapter para solo capturar el LostFocus.
JTextFieldjtxtNombres.addFocusListener(new java.awt.event.FocusAdapter() {
        public 
void focusLost(java.awt.event.FocusEvent evt) {
            
// Aqui pon tu codigo para validar el Campo de Texto cuando pierda el foco
            
            // Sí no es valido cancelas el Evento y evitas que pierda el Foco.
            
evt.consume();
            
        }
}); 
Ahora deberia funcionarte sin problemas....

Saludos
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.
  #10 (permalink)  
Antiguo 17/03/2010, 14:14
Avatar de miguec04  
Fecha de Ingreso: agosto-2008
Ubicación: Cimitarra, Santander
Mensajes: 378
Antigüedad: 15 años, 8 meses
Puntos: 15
Respuesta: Problema evento focuslost

amigo me sale el siguiente error

consume() has protected access in java.awt.AWTEvent

muchas gracias por querer ayudarme.

estoy trabajando con netbeans

java ya me genera lo siguiente

Código JAVA:
Ver original
  1. jtxtDocumento.addFocusListener(new java.awt.event.FocusAdapter() {
  2.             public void focusLost(java.awt.event.FocusEvent evt) {
  3.                 getFocDoc(evt);
  4.             }
  5.         });
  6.         jtxtDocumento.addKeyListener(new java.awt.event.KeyAdapter() {
  7.             public void keyTyped(java.awt.event.KeyEvent evt) {
  8.                 tipo(evt);
  9.             }
  10.         });

y yo pues solo hago el metodo que me esta pidiendo

Código JAVA:
Ver original
  1. private void getFocDoc(java.awt.event.FocusEvent evt) {
  2.          String txt=jtxtDocumento.getText();
  3.         if(txt.equals(""))
  4.         {
  5.             JOptionPane.showMessageDialog(this, "El campo documento paciente\nes obligatorio");
  6.             jtxtDocumento.requestFocus();
  7.         }
  8.         else
  9.         {
  10.            Conexion conn = new Conexion();
  11.              String sql;
  12.              ResultSet rs=null;
  13.              sql="SELECT pacnom||' '||pacape AS nombre FROM pacientes WHERE pacide='"+jtxtDocumento.getText()+"'";
  14.              conn.getConn();
  15.                 rs=conn.getQuery(sql);
  16.                 try
  17.                 {
  18.                     if(rs.next())
  19.                     {
  20.                         jlblNombres.setText(rs.getString("nombre"));
  21.                     }
  22.                     else
  23.                     {
  24.                         JOptionPane.showMessageDialog(this,"Usuario no existe");
  25.                     }
  26.                 } catch(Exception e)
  27.                 {
  28.                     JOptionPane.showMessageDialog(null, e);
  29.                 }
  30.              conn.getCerrarConex();
  31.         }
  32.     }

NO SE QUE HACER muchas gracias.
__________________
Desoftc Technology - Miguel Carmona
Creaciones Inteligentes - Cimitarra Colombia
[email protected]
http://www.desoftc.com.co

Última edición por miguec04; 17/03/2010 a las 14:24 Razón: agregar codigo en mi consulta.
  #11 (permalink)  
Antiguo 17/03/2010, 19:05
Avatar de dackiller  
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: Problema evento focuslost

Obviamente no puedes tener acceso a la variable porque es protected. Recuerda que las variables protected solo podrán ser accesibles en la clase extendida.

Si el metodo getFocDoc(evt); no lo usas para otras tareas, entonces omitelo y agrega el codigo dentro de la implementacion public void focusLost(java.awt.event.FocusEvent evt), que te genera NetBeans... (facil).

Deberia quedar algo asi...

Código PHP:
jtxtDocumento.addFocusListener(new java.awt.event.FocusAdapter() {
            public 
void focusLost(java.awt.event.FocusEvent evt) {
               
// Omite este metodo getFocDoc(evt);
String txt=jtxtDocumento.getText();
        if(
txt.equals(""))
        {
            
JOptionPane.showMessageDialog(this"El campo documento paciente\nes obligatorio");
            
jtxtDocumento.requestFocus();
        }
        else
        {
           
Conexion conn = new Conexion();
             
String sql;
             
ResultSet rs=null;
             
sql="SELECT pacnom||' '||pacape AS nombre FROM pacientes WHERE pacide='"+jtxtDocumento.getText()+"'";
             
conn.getConn();
                
rs=conn.getQuery(sql);
                try
                {
                    if(
rs.next())
                    {
                        
jlblNombres.setText(rs.getString("nombre"));
                    }
                    else
                    {
                        
JOptionPane.showMessageDialog(this,"Usuario no existe");
                    }
                } catch(
Exception e)
                {
                    
JOptionPane.showMessageDialog(nulle);
                }
             
conn.getCerrarConex();
        }

            }
}); 
Prueba esto, ahora si deberia funcionarte...

Saludos
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.

Etiquetas: eventos
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 04:54.