Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

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:



Con la tecnología de Blogger.