Foro de elhacker.net

Programación => Java => Mensaje iniciado por: LaThortilla (Effort) en 5 Octubre 2015, 21:18 pm



Título: [AYUDA] Threads y swing JProgressBar
Publicado por: LaThortilla (Effort) en 5 Octubre 2015, 21:18 pm
Buen día estoy intentando hacer lo siguiente y espero puedan orientarme.

Tengo:
 La clase principal, una clase secundaria (procesa información) y una interfaz para informar a la clase principal sobre el proceso que se está realizado.
En La Clase principal:
Se tiene una instancia de la clase Secundaria a la cual se le pasa una instancia de la interface Proceso.
Se tiene una barra de progreso (JProgressBar) que se modificara mediante la llamada al método onProgress de la interface Proceso.

El problema es el siguiente:
Al llamar al método Proceso desde la clase Secundaria no se actualiza el progressbar si no hasta que finaliza todo el proceso

Clase Principal:
Código
  1. public class Principal {
  2.    public static JFrame ventana = new JFrame("ISP Reporte IP 1.0");
  3.    public static JProgressBar progres = new JProgressBar();
  4.    public static Progreso listener = new Progreso() {
  5.             @Override
  6.             public void onProgress(int proceso) {
  7.                 progres.setValue(proceso);
  8.             }
  9.         };
  10.  
  11.     public static void main(String[] args){
  12.        progres.setVisible(true);
  13.        ventana.add(progres);
  14.        ventana.setVisible(true);
  15.  
  16.  
  17.        Secundaria sec = new Secundaria(listener);
  18.  
  19.        sec.Prosesar();
  20.     }
  21. }
  22.  
Clase Secundaria:
Código
  1. class Secundaria{
  2.    private Progreso listener;
  3.    Secundaria(Progreso listener){
  4.        this.listener = listener;
  5.    }
  6.  
  7.    public void Prosesar(){
  8.        int count = 0;
  9.        while(count > 100){
  10.            count++;
  11.            listener.onProgress(count);
  12.        }
  13.    }
  14. }
  15.  

Interfaz Prosesar:
Código
  1. public interface Progreso {
  2.    void onProgress(int proceso);  
  3. }
  4.