Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/04/2011, 12:17
fcojose2001
 
Fecha de Ingreso: marzo-2009
Ubicación: Salamanca, España
Mensajes: 141
Antigüedad: 15 años, 8 meses
Puntos: 4
hilos, progressMonitor

A ver, no puede ser tan dificil, jeje, pero yo soy incapaz.

Quiero implantar una barra de progreso, logicamente para que tanto la barra como la aplicacion funcionen a la vez necesito trabajar con hilos, en un hilo se realizaran los calculos, y en el otro hilo se mostrara la evolucion con una barra.

Supongamos que cuando se pulsa el boton enviar en el hilo principal se recorre un bucle for de 1 a 100, en ese momento debe crearse un hilo que me muestra la evolucion de la operacion en una barra.

Como el progreso de la barra depende del bucle que se esta ejecutando en el principal deberia pasarle ese valor "i" para que me pueda pintar el porcentaje correcto.

Como implemento esto???

Este seria el codigo para la ventana principal, se pulsa boton y se inicia el bucle for

Código Javascript:
Ver original
  1. [SIZE="2"]import java.awt.BorderLayout;
  2. import java.awt.FlowLayout;
  3. import java.awt.GridBagConstraints;
  4. import java.awt.GridBagLayout;
  5. import java.awt.Insets;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import javax.swing.JButton;
  9. import javax.swing.JDialog;
  10. import javax.swing.JFrame;
  11. import javax.swing.JLabel;
  12. import javax.swing.JProgressBar;
  13. import javax.swing.WindowConstants;
  14.  
  15.  
  16. public class Main2
  17. {
  18.  
  19.     /** La ventana */
  20.     private JFrame v;
  21.    
  22.     /** El botón */
  23.     private JButton b;
  24.    
  25.     public static void main(String [] args)
  26.     {
  27.         new Main2();
  28.     }
  29.    
  30.     /**
  31.      * Crea la ventana, inicializa todo y la visualiza
  32.      */
  33.     public Main2()
  34.     {
  35.         // Nueva ventana. Se el pone un FlowLayout para que el botón y campo
  36.         // de texto quede alineados.
  37.         v = new JFrame("Version Beta Transmision");
  38.         GridBagLayout vLayout = new GridBagLayout();
  39.         v.getContentPane().setLayout(vLayout);
  40.         vLayout.rowWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1};
  41.         vLayout.rowHeights = new int[] {7, 7, 7, 7, 7};
  42.         vLayout.columnWeights = new double[] {0.1, 0.0, 0.1, 0.1};
  43.         vLayout.columnWidths = new int[] {7, 129, 7, 7};
  44.      
  45.         // Se crea el botón y se mete en la ventana
  46.         b = new JButton("Enviar");
  47.         v.getContentPane().add(b, new GridBagConstraints(3, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
  48.              
  49.         // Se le dice al botón qué tiene que hacer cuando lo pulsemos.
  50.         b.addActionListener(new ActionListener()
  51.         {
  52.  
  53.             public void actionPerformed(ActionEvent e)
  54.             {                              
  55.                 for(int i=0;i<100;i++){
  56.                     //mihilo.resultado(i);
  57.                     System.out.println("Progreso:" +i);
  58.                    
  59.                 }
  60.                
  61.             }
  62.         });
  63.        
  64.         // Se le dice a la ventana que termine el programa cuando se la cierre
  65.         v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  66.        
  67.         // Se le da un tamaño automático a la ventana para que quepa todo su
  68.         // contenido.
  69.         v.pack();
  70.         v.setSize(764, 365);
  71.  
  72.         // Se hace visible la ventana
  73.         v.setVisible(true);
  74.     }
  75.    
  76.    
  77. }[/SIZE]

Ahora necesito crear un hilo cuando se pulse el boton y mandarle ese parametro "i" del bucle para informar a la barra del progreso y asi la pinte