Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: JenselG en 25 Marzo 2018, 03:50 AM

Título: Problema con un bucle en un boton
Publicado por: JenselG en 25 Marzo 2018, 03:50 AM
Buenas a todos, espero que esten bien. Estoy desarrollando un pequeño programa que debe mostrarme unas imagenes diferentes cada segundo en un jlabel al pulsar el boton reproducir (Corto de StopMotion), pero al pulsar reproducir se me bloquea la aplicacion, el boton y no me deja hacer nada mas, Para cerrar la app debo cerrar el proceso. ademas no me carga ni una sola imagen ni puedo presionar los demas botones. ¿que puedo hacer? Uso Eclipse Oxigen

Código (java) [Seleccionar]

         JButton Play = new JButton("Reproducir");
 Play.addActionListener(new ActionListener() {

 public void actionPerformed(ActionEvent arg0) {

AnimationControl = true;  // variable que controla la reproduccion

if(SelectAnimation.getSelectedItem() == "Jinete Montando Caballo") {

    String Path1 =  "/ImagenesCaballo/Frame1.jpg" ;  
    java.net.URL ImageDirection = this.getClass().getResource(Path1);  //Lee la direccion de imagen  
    ImageIcon Frame1 =  new  ImageIcon(ImageDirection);

    String Path2 =  "/ImagenesCaballo/Frame2.jpg" ;  
    java.net.URL ImageDirection2 = this.getClass().getResource(Path2);  
    ImageIcon Frame2 =  new  ImageIcon(ImageDirection2);

    while(AnimationControl) {  // bucle que muestra cada imagen por segundo

Cuadro.setIcon(Frame1);  //Establece imagen1
Cuadro.setIcon(Frame2);  //Establece imagen2 Sucesivamente 16 imagenes

try {

  Thread.sleep(1000);  // Espera 1 segundo por imagen

} catch (InterruptedException e) {

// TODO Bloque catch generado automáticamente

  e.printStackTrace();
}
}
}    
   
Título: Re: Problema con un bucle en un boton
Publicado por: rub'n en 26 Marzo 2018, 13:52 PM
Hola,

Muestra el log del error, llega a entrar al if? aunque si no cambia las imagenes  :rolleyes:
Título: Re: Problema con un bucle en un boton
Publicado por: animanegra en 26 Marzo 2018, 16:16 PM
Te pasa eso porque no estas dejando a la interfaz dibujar nada. No puedes hacer un proceso que se quede esperando con sleep en una accion porque dejas en estado de inanición al proceso de dibujado y atencion del resto de acciones de la aplicación.

Si deseas que cada cierto tiempo se cambie la imagen deberás de programarlo con un action listener asociado a un timer (el de awk o el de util). Y en cada click de reloj que haga un cambio a la siguiente imagen que deseas mostrar en tu interfaz.

Saludos.