threads thread sleepen problem current crear java multithreading swing netbeans jframe

java - sleepen - Thread.sleep(long mills) retrasando también el método anterior



thread sleep java problem (1)

Thread.sleep hace exactamente eso, hace que el hilo actual duerma. En este caso, supongo que todo se hace desde el contexto del subproceso de distribución de eventos, lo que significa que no puede actualizar la pantalla, ya que lo detuvieron para que no procese nuevos eventos, como repintar eventos.

Swing es un entorno de subproceso único, es decir, se espera que todas las interacciones y modificaciones en el estado de la interfaz de usuario ocurran dentro del contexto del subproceso de envío de evento. Cualquier cosa que bloquee este hilo, como E / S extendida, bucles de larga ejecución o Thread.sleep evitará que el EDT procese nuevos eventos y actualice la pantalla, haciendo que su aplicación parezca como si se hubiera congelado ...

Use un Timer oscilación en su lugar

Por ejemplo...

invalid_login_label.setVisible(false); username_label.setVisible(false); user_field.setVisible(false); password_label.setVisible(false); pass_field.setVisible(false); access_granted_label.setVisible(true); javax.swing.Timer timer = new javax.swing.Timer(1000, new ActionListener() { public void actionListener(ActionEvent evt) { dispose(); } }); timer.setRepeats(false); timer.start();

Consulte la Concurrencia en Swing y Cómo usar Swing Timers para más detalles.

invalid_login_label.setVisible(false); username_label.setVisible(false); user_field.setVisible(false); password_label.setVisible(false); pass_field.setVisible(false); access_granted_label.setVisible(true); Thread.sleep(1000); this.dispose();

¡Hola Mundo! Soy un poco novato en Java y estoy usando netbeans, así que tengo este código en mi jframe. lo que quiero hacer es después de que el sistema haya autenticado al usuario. eliminará la visibilidad de todos los campos y mostrará "acceso concedido" para 1000mills, pero comienza a retrasar pero aún no elimina la visibilidad de los campos.