Foro de elhacker.net

Programación => 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
  1.          JButton Play = new JButton("Reproducir");
  2.  Play.addActionListener(new ActionListener() {
  3.  
  4.  public void actionPerformed(ActionEvent arg0) {
  5.  
  6. AnimationControl = true;  // variable que controla la reproduccion
  7.  
  8. if(SelectAnimation.getSelectedItem() == "Jinete Montando Caballo") {
  9.  
  10.     String Path1 =  "/ImagenesCaballo/Frame1.jpg" ;  
  11.     java.net.URL ImageDirection = this.getClass().getResource(Path1);  //Lee la direccion de imagen  
  12.     ImageIcon Frame1 =  new  ImageIcon(ImageDirection);
  13.  
  14.     String Path2 =  "/ImagenesCaballo/Frame2.jpg" ;  
  15.     java.net.URL ImageDirection2 = this.getClass().getResource(Path2);  
  16.     ImageIcon Frame2 =  new  ImageIcon(ImageDirection2);
  17.  
  18.     while(AnimationControl) {  // bucle que muestra cada imagen por segundo
  19.  
  20. Cuadro.setIcon(Frame1);  //Establece imagen1
  21. Cuadro.setIcon(Frame2);  //Establece imagen2 Sucesivamente 16 imagenes
  22.  
  23. try {
  24.  
  25.   Thread.sleep(1000);  // Espera 1 segundo por imagen
  26.  
  27. } catch (InterruptedException e) {
  28.  
  29. // TODO Bloque catch generado automáticamente
  30.  
  31.   e.printStackTrace();
  32. }
  33. }
  34. }    
  35.  
   


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.