Lo primero es instalar los componentes de Swingx, esto ya lo he explicado en este post.
Ahora construyamos nuestra GUI, en este caso en un JFrame sencillo con un boton Listar y una tabla que será la que cargará los datos, le pondremos un Progressbar y para la animacion el componente de SwingLabs denominado JXBusyLabel.
Nuestra ventana debe ser similar a la siguiente.
Explicaremos un poco el componente JXBusyLabel, este componente simplemente contiene una imagen la cual al poner en true su metodo setBusy() presenta una animacion y ademas permite mediante su metodo setText() definir algun texto que queremos que presente.
Bueno como repasando vamos a ver algunos pasos del post Uso de Swingworker.
En nuestro evento actionPerformed del boton Listar vamos agregar las siguientes lineas.
Dentro de jbtnListarActionPerformed
private void jbtnListarActionPerformed(java.awt.event.ActionEvent evt) { //iniciamos nuestra barra de progreso progressBar.setValue(0); //definimos un texto que acompaña a la animacion jxLoader.setText("Cargando..."); //iniciamos la animacion jxLoader.setBusy(true); //visualizamos la animacion jxLoader.setVisible(true);
Si recuerdan para cargar los datos de una tabla aprovechando el metodo asincrono de swingworker utilizamos su metodo doInBackground() y el metodo done() nos permite definir que se debe hacer cuando culminó la tarea.
Pues dentro del metodo done() agregaremos el siguiente codigo el cual lo unico que hace es detener la animacion y ocultar el componente.
Dentro de jbtnListarActionPerformed
@Override protected void done() { setProgress(100); jtblProductos.setModel(new ArraylistTableModel(datos, cols)); jxLoader.setBusy(false); jxLoader.setVisible(false); }
Descarga aplicacion ejemplo Swingworker
ResponderEliminar