viernes, 17 de enero de 2014

Actualizar JProgressBar en tiempo de ejecución.

Usando Netbeans 7.4 creamos un nuevo proyecto con un JFrame Form.
En modo de diseño le agregamos el componente "Progress Bar" y un "Button".
Deberia quedar algo asi:




Codigo Principal:

package barraprogreso1;

public class BarraProgreso1 extends javax.swing.JFrame {

    public BarraProgreso1() {
        initComponents();

        jProgressBar1.setMaximum(100);
    }

    @SuppressWarnings("unchecked")
                            
    private void initComponents() { ... }


    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt){                                        
            Worker  worker = new Worker (jProgressBar1);
            worker.execute();

    }                                       

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new BarraProgreso1().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                    
    private javax.swing.JButton jButton1;
    private javax.swing.JProgressBar jProgressBar1;
    // End of variables declaration                  
}



 Codigo Clase Worker:

package barraprogreso1;

import java.util.List;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;


public class Worker extends SwingWorker {

    private final JProgressBar progreso;

    Worker(JProgressBar barra) {
        progreso = barra;
    }

    @Override
    public Double doInBackground() throws Exception {
        for (int i = 0; i < 100; i++) {
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
            }
            publish(i + 1);
        }
        return 100.00;
    }


    @Override
    protected void done() {
        System.out.println("Proceso a acabado");
    }

 
    @Override
    protected void process(List chunks) {

        //Actualizando la barra de progreso. Datos del publish.
        progreso.setValue(chunks.get(0));
    }

}



Resultado:



1 comentario:

  1. este ejemplo es el de wikki pero omitistes ciertos comentario que son de mucha importancia para comprender el ejemplo. De todas formas grax...

    ResponderEliminar