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
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();
}
}
}
Hola,
Muestra el log del error, llega a entrar al if? aunque si no cambia las imagenes :rolleyes:
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.