Foros del Web » Programación para mayores de 30 ;) » Java »

Problema con JProgressBar

Estas en el tema de Problema con JProgressBar en el foro de Java en Foros del Web. Hola, estoy tratando de implementar una JProgressBar, pero no me funciona... en teoria. Tengo este codigo: Código: private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { d = new ...
  #1 (permalink)  
Antiguo 19/05/2011, 20:07
 
Fecha de Ingreso: enero-2010
Mensajes: 88
Antigüedad: 14 años, 3 meses
Puntos: 2
Problema con JProgressBar

Hola, estoy tratando de implementar una JProgressBar, pero no me funciona... en teoria.

Tengo este codigo:
Código:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        d = new DAO();
        int countB = 0;
        int countE = 0;
        jProgressBar1.setValue(0);
        jProgressBar1.setMinimum(0);
        jProgressBar1.setMaximum(jTable1.getRowCount());
        jProgressBar1.setStringPainted(true);
        for(int i = 0; i<jTable1.getRowCount();i++){
            r = new InsertarNuevoRepuesto();
            for(int u = 0;u < jTable1.getColumnCount();u++){
                if(u == 0){
                    r.setCodigoMovill(jTable1.getValueAt(i, u)+"");
                }
                if(u == 1){
                    r.setCodigo(jTable1.getValueAt(i, u)+"");
                }
                if(u == 2){
                    r.setDescripcion(jTable1.getValueAt(i, u)+"");
                }
                if(u == 3){
                    r.setMarca(jTable1.getValueAt(i, u)+"");
                }
                if(u == 4){
                    r.setStock((Integer)jTable1.getValueAt(i,u));
                }
                if(u == 5){
                    String aux = jTable1.getValueAt(i, u)+"";
                    aux = aux.replace(",",".");
                    Double p = new Double(aux);
                    r.setPrecioVentaUS(p);
                }
                if(u == 6){
                    r.setPrecioVentaPeso((Integer)jTable1.getValueAt(i, u));
                }
                if(u == 7){
                    r.setPrecioVenta((Integer)jTable1.getValueAt(i, u));
                    if(d.insertarRepuesto(r)){
                        countB++;
                    } else {
                        countE++;
                    }
                }
            }
            jProgressBar1.setValue(i);
            jProgressBar1.revalidate();
            jProgressBar1.repaint();
        }
        JOptionPane.showMessageDialog(null, "Se han insertado "+countB+" Items \n"
                +countE+" Items han presentado error");
    }
El cual uso para recorrer una JTable eh insertarla en la BD, como sabran, esta accion puede tomar algunos segundos, asi que quiero implementar una JProgressBar mientras se ejecuta esta accion.

El problema es que al ejecutarlo, la barra no se funciona, simplemente se queda en 0, y una vez terminada la accion llega a 100. No sé que será. En todos los ejemplos que encuentro en internet usan hilos para hacerlos funcionar.

Espero me puedan ayudar.
  #2 (permalink)  
Antiguo 20/05/2011, 02:51
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: Problema con JProgressBar

Pues precisamente eso, necesitas hilos. Mientras se esté ejecutando el actionPerformed() del botón NO se refresca nada de las ventanas, por ello da igual que actualices o no el JProgressBar, porque no lo verás hasta que termine el método actionPerformed().

El actionPerformed() necesita lanzar un hilo para hacer todo eso y terminar él mismo lo antes posible, permitiendo que se refresquen las ventanas.

Más detalles en http://chuwiki.chuidiang.org/index.p...El_hilo_de_awt

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 20/05/2011, 13:34
 
Fecha de Ingreso: enero-2010
Mensajes: 88
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Problema con JProgressBar

Muchas gracias :D
Me funciono perfecto

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:52.