Buenas.
Tengo un método que, dado un label con una imagen asignada (un icon), llamada "back", implementa un listener tal que:
- Cuando se hace click, la imagen del icono cambia de "back" a "front".
- El programa se pausa X segundos.
- La imagen del icono vuelve a ser "back".
El código que tengo es este:
private void jLabelMouseClicked(java.awt.event.MouseEvent evt) {
jLabel.setIcon(front);
Thread.sleep(1000);
jLabel.setIcon(back);
}
Esto no funciona como parece a simple vista. En lugar de cambiar, esperar y volver a cambiar, es como si sleep() reseteara el bucle. Es decir, que primero espera un segundo, luego cambia a front e inmediatamente después a back, como si el sleep() se pusiera antes que los dos setIcon() en lugar de enmedio.
¿Alguien sabe por qué ocurre esto? He estado mirando la API pero no veo nada raro o que me haga pensar que estoy usando mal el método. También podría ser el sueño que tengo, no lo descarto.
P.D.: sólo hay un hilo de ejecución en todo el programa.