Java - Problema con un bucle while en un boton

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con un bucle while en un boton

Publicado por Jensel Stiven (3 intervenciones) el 25/03/2018 15:12:50
Buenas a todos, estoy programando una pequeña aplicacion que debe mostrarme una animacion de stopmotion, Usando 16 imagenes mostradas por segundo. Pero al reproducirla se bloquea el programa y no muestra ninguna imagen, ademas no puedo manipular los demas componentes de la ventana. Debo cerrarla cancelando el proceso, ¿que debo hacer?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public void actionPerformed(ActionEvent arg0) {
 
	AnimationControl = true; //Controla la reproduccion
 
	if(SelectAnimation.getSelectedItem() == "Jinete Montando Caballo") { // Si la animacion Seleccionada es jinete montando caballo (16 Frames)
 
		String Path1 =  "/ImagenesCaballo/Frame1.jpg" ;
		java.net.URL ImageDirection = this.getClass().getResource(Path1);  // Lee la imagen 1
		ImageIcon Frame1 =  new  ImageIcon(ImageDirection);
 
		String Path2 =  "/ImagenesCaballo/Frame2.jpg" ;
		java.net.URL ImageDirection2 = this.getClass().getResource(Path2);  // Lee la imagen 2
		ImageIcon Frame2 =  new  ImageIcon(ImageDirection2);
 
		String Path3 =  "/ImagenesCaballo/Frame3.jpg" ;
		java.net.URL ImageDirection3 = this.getClass().getResource(Path3);  // Lee la imagen 3
		ImageIcon Frame3 =  new  ImageIcon(ImageDirection3);
 
		String Path4 =  "/ImagenesCaballo/Frame4.jpg" ;
		java.net.URL ImageDirection4 = this.getClass().getResource(Path4);  // Lee la imagen 4
		ImageIcon Frame4 =  new  ImageIcon(ImageDirection4);
 
		while(AnimationControl) { // Bucle Que establece cada frame por sgundo
 
			Cuadro.setIcon(Frame1); // Establece Frame 1
 
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) { //Espera 1 Segundo
 
				e.printStackTrace();
			}
 
			Cuadro.setIcon(Frame2);// Establece Frame 2
 
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) { //Espera 1 Segundo
 
				e.printStackTrace();
			}
 
			Cuadro.setIcon(Frame3); // Establece Frame 3
 
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) { //Espera 1 Segundo
 
				e.printStackTrace();
			}
 
			Cuadro.setIcon(Frame4); //Establece Frame 4
 
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) { //Espera 1 Segundo
 
				e.printStackTrace();
			}
 
		}
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con un bucle while en un boton

Publicado por Yamil Bracho (10 intervenciones) el 25/03/2018 16:06:54
El problema es que estas ejecutando todas esas operaciones dentro del hilo principal y por eso se te bloquea toda la UI.
Debes crear un hilo donde se ejecute la tarea que tienes en el actionPerfomed
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con un bucle while en un boton

Publicado por Jensel Stiven (3 intervenciones) el 25/03/2018 18:10:47
Y mas o menos como seria? Crear un Thread Hilo = new Thread();
y luego para establecer la funcion?
Disculpa la molestia soy principiante
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con un bucle while en un boton

Publicado por Yamil Bracho (10 intervenciones) el 25/03/2018 18:16:05
Algo asi, en el actionPerformed creas el hilo y lo arrancas con start
y creas una clase que extienda Thread o implemente Runnable (mejor) y alli colocas el codigo que estas usando en el actionPerformed o
a la clase que tienes ahora simplemnte le dice que implements Runnable y creas el metodo run() donde colocas el codigo del actionPerfomed
Chequea https://docs.oracle.com/javase/tutorial/essential/concurrency/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 5 puestos en Java (en relación al último mes)
Gráfica de Java

Problema con un bucle while en un boton

Publicado por Jensel Stiven (3 intervenciones) el 27/03/2018 15:51:31
Muchas gracias amigo ya tengo todo en esta pagina gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar