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
[SIZE="2"]import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JProgressBar; import javax.swing.WindowConstants; public class Main2 { /** La ventana */ private JFrame v; /** El botón */ private JButton b; public static void main(String [] args) { new Main2(); } /** * Crea la ventana, inicializa todo y la visualiza */ public Main2() { // Nueva ventana. Se el pone un FlowLayout para que el botón y campo // de texto quede alineados. v = new JFrame("Version Beta Transmision"); GridBagLayout vLayout = new GridBagLayout(); v.getContentPane().setLayout(vLayout); vLayout.rowWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1}; vLayout.rowHeights = new int[] {7, 7, 7, 7, 7}; vLayout.columnWeights = new double[] {0.1, 0.0, 0.1, 0.1}; vLayout.columnWidths = new int[] {7, 129, 7, 7}; // Se crea el botón y se mete en la ventana b = new JButton("Enviar"); 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)); // Se le dice al botón qué tiene que hacer cuando lo pulsemos. b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { for(int i=0;i<100;i++){ //mihilo.resultado(i); System.out.println("Progreso:" +i); } } }); // Se le dice a la ventana que termine el programa cuando se la cierre v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); // Se le da un tamaño automático a la ventana para que quepa todo su // contenido. v.pack(); v.setSize(764, 365); // Se hace visible la ventana v.setVisible(true); } }[/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