Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Crear ventana de cargando

Buenas! Cómo va?
Tengo un problema con mi código ya que tengo un botón que al presionarlo necesariamente tarda unos segundos por una línea de código que se encuentra en el evento de presionar el botón, pero me gustaría que mientras tarde esos segundos aparezca una ventana de cargando. La ventana de cargando la tengo, pero el problema está en que el gif de cargando aparece luego de haber computado esta línea de código que hace que tarde todo. Por lo que terminaría creando una ventana normal, y luego de 5 segundos(o lo que tarde en computar) aparece este gif. Tienen alguna solución para esto???
Les dejo el código:
//este es el evento de presionar el botón
private void jButtonProcesarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

new InterfazCargando().setVisible(true);

ManejoArchivos.crearzpl(inicio); //esta es la línea que necesariamente tarda

}

y en la clase interfaz cargando tengo solo esto
public InterfazCargando() {
initComponents();
// donde el gif está agregado desde el design de netbeans por lo que no aparece en esta línea (o sea está autogenerado en su código)
}

Desde ya muchas gracias por adelantado!
Saludos!

octubre 27, 2015 | Registered Commenterrodrigo102195

https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingWorker.html

octubre 28, 2015 | Unregistered CommenterChavitoDel8

muchas gracias ChavitoDel8, les dejo la solución que implementé:


private void jButtonProcesarActionPerformed(java.awt.event.Acti onEvent evt) {
// TODO add your handling code here:

DialogoCargando cargando= new DialogoCargando(); //dialogocargando extends JDialog
cargando.setVisible(true);

SwingWorker<Void,Void> swingWorker = new SwingWorker<Void,Void>(){

@Override
public Void doInBackground() throws Exception {

Thread.sleep(2000);

return null;
}
@Override
public void done() {
cargando.dispose();


}
};
swingWorker.execute();


}

octubre 28, 2015 | Unregistered Commenterrodrigo102195