miércoles, 25 de julio de 2012

Swing netbeans multihilo con barra de progreso

Con este ejemplo podemos usar una barra de progreso en Netbeans, los controles se pueden dibujar y cuando necesitemos procesar algo que consuma tiempo lo podemos mostrar con la barra de progreso desde esta clase


    static class HiloDeLaBarra extends Thread {
        private static int RETARDO = 500;
        JProgressBar Barra;
           
        // Constructor
        public HiloDeLaBarra(JProgressBar barra) {
            Barra = barra;
        }

        // Subrutina que incrementa la barra de progreso
        public void run() {
            int minimo = Barra.getMinimum();
            int maximo = Barra.getMaximum();
           
            Runnable Incrementa = new Runnable()
            {
                public void run() {
                    int valor = Barra.getValue();
                    Barra.setValue(valor + 1);
                }
            };

            for (int i = minimo; i < maximo; i++) {
                try {
                    SwingUtilities.invokeAndWait(Incrementa);
                    Thread.sleep(RETARDO);
                } catch (InterruptedException ignoredException) {} catch (InvocationTargetException ignoredException) {}
            }
        }
    }

   

Podemos usar un botón para iniciar el proceso, al cual debemos colocarle en el ActionListener el llamado a la clase.

        ActionListener actionListener = new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            Boton.setEnabled(false);
            Thread Hilo = new HiloDeLaBarra(BarraDeProgreso);
            Hilo.start(); // Lo ejecuta
          }
        };
        Boton.addActionListener(actionListener);

No hay comentarios:

Publicar un comentario