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

Set visible no se ejecuta cuando debe

Estas en el tema de Set visible no se ejecuta cuando debe en el foro de Java en Foros del Web. Saludos amigos. Tengo este problema que no he podido solucionar en un buen rato, pero sé que ustedes tiene la solución quiero hacer que cuando ...
  #1 (permalink)  
Antiguo 14/11/2012, 22:27
Avatar de Cero_Cool  
Fecha de Ingreso: abril-2007
Ubicación: Chile
Mensajes: 113
Antigüedad: 17 años
Puntos: 6
Set visible no se ejecuta cuando debe

Saludos amigos. Tengo este problema que no he podido solucionar en un buen rato, pero sé que ustedes tiene la solución

quiero hacer que cuando presiono un botón para conectar mi aplicación con la BD se habilite un pequeño gif típico de "cargando" en una esquina del jframe, y que luego intente la conexión. El caso es no muestra el gif sino hasta que la conexión ya se ha gestionado habiendo sido realizada con éxito o fallando, es como si leyera ese código después de como esta escrito en el flujo. Intenté con una venta de " conectando con el servidor ", pero sucede lo mismo, lanza la ventana al final y no antes como debería ser según la lógica del código.

Para lograr ver que aparezca el gif, hago que la aplicación conecte a un servidor que no existe, así se queda un buen rato intentando, en ese tiempo debería aparecer el gif mientras busca, pero no es así, aparece una vez que ya me ha dicho que ha fallado la conexión. A continuación el código de como debería funcionar si todo resultara como pretendo.

Código PHP:
private void btnIngresarMouseClicked(java.awt.event.MouseEvent evt) {                                         
       
       if (
getAcciones_Login().campos_llenos() == true){
        
        
loading.setVisible(true);
        try {    
            
getConexion().conectar("server","bd","user","pass");
             } 
        catch (
ClassNotFoundException SQLException ex
            {
            
loading.setVisible(false);
            
JOptionPane.showMessageDialog(this"Ha fallado la conexión con el servidor","Error de conexión"0);
            }
       }
    } 
  #2 (permalink)  
Antiguo 15/11/2012, 03:42
 
Fecha de Ingreso: enero-2009
Mensajes: 26
Antigüedad: 15 años, 3 meses
Puntos: 4
Respuesta: Set visible no se ejecuta cuando debe

Buenas,

En realidad el setVisible(true) sí se ejecuta, pero no puedes verlo.

Me explico.

Cuando tratas de visualizar un GIF Animado en Swing, el hilo que se encarga de gestionar la pantalla, debe repintar el GIF cada "x" tiempo para cambiar la imagen y crear así la animación. El problema está en que ese hilo está ocupado gestionando la conexión.

Para solucionarlo debes realizar la conexión en un nuevo hilo.

A partir de Java 6 existe una clase llamada SwingWorker que tiene como objetivo realizar este tipo de operaciones pesadas (como gestionar conexiones a BBDD o ficheros) en un hilo diferente.

Échale un ojo a la API (o Googlea) y si tienes alguna duda avisa :D

http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html
  #3 (permalink)  
Antiguo 15/11/2012, 12:52
Avatar de Cero_Cool  
Fecha de Ingreso: abril-2007
Ubicación: Chile
Mensajes: 113
Antigüedad: 17 años
Puntos: 6
Respuesta: Set visible no se ejecuta cuando debe

Muchas gracias v3rn0n, estoy estudiando el tema. Soy nuevo en java y jamas me hubiera imaginado que la solución seria esta. gracias nuevamente.

Última edición por Cero_Cool; 15/11/2012 a las 13:08
  #4 (permalink)  
Antiguo 16/11/2012, 05:13
 
Fecha de Ingreso: septiembre-2012
Ubicación: españa
Mensajes: 39
Antigüedad: 11 años, 7 meses
Puntos: 8
Respuesta: Set visible no se ejecuta cuando debe

cosas de java e hilos, seguro que todos hemos pasado mas de una vez por eso.
__________________
Diseño web

Etiquetas: ejecuta, set, visible
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 20:25.