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

barra de progreso no actualiza

Estas en el tema de barra de progreso no actualiza en el foro de Java en Foros del Web. hola... buenos días.... Estoy haciendo una sistema en java y netbeans, tengo un proceso que dura mucho porque esta dentro de WHILE y lo que ...
  #1 (permalink)  
Antiguo 14/03/2012, 10:49
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta barra de progreso no actualiza

hola... buenos días....
Estoy haciendo una sistema en java y netbeans, tengo un proceso que dura mucho porque esta dentro de WHILE y lo que quiero es mostrar el porcentaje del bucle en una barra de progreso, ya tengo la barra, hice ya el calculo que me da el porcentaje, si pongo en un SYSTEM.OUT.PRINTLN(); hace bien pero la barra no actualiza, pero cuando termina el bucle y sale de él, la barra de progreso se actualiza y muestra 100%, yo quiero que tenga el efecto "Cargando" que normalmente se ve...

se agradecerá mucho alguna ayuda que me puedan dar.... :)
  #2 (permalink)  
Antiguo 14/03/2012, 14:28
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 7 meses
Puntos: 344
Respuesta: barra de progreso no actualiza

Las preguntas claves son:

- ¿Estás realizando la aplicación con Swing o en otro?
- ¿El bucle while lo estás ejecutando en un hilo aparte?

Una vez respondido eso y si pones el código podemos hablar.

Saludos.
  #3 (permalink)  
Antiguo 14/03/2012, 14:49
 
Fecha de Ingreso: marzo-2012
Mensajes: 2
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: barra de progreso no actualiza

es una aplicacion de escritorio...y el tema del hilo no se si estoy haciedo asi o no, no estoy tan avanzado en el tema de java recien estoy empezando a programar en el...

este es el codigo donde esta la barra de progreso

private void generarFacturas() {
Timbrados.barraprogreso.setStringPainted(true);
String xide = this.txtCod_Timbrado.getText();
int desde = Integer.parseInt(this.txtFact_Desde.getText());
int hasta = Integer.parseInt(this.txtFact_Hasta.getText());
String usado = "1";
while (desde <= hasta) {
String fact_num = String.valueOf(desde);
sentencia = null;
sentencia = "INSERT INTO facturas VALUES('" + xide + "','" + fact_num + "','" + usado + "')";
try {
ejecutar.executeUpdate(sentencia);
double barra = (desde * 100) / hasta;
Timbrados.barraprogreso.setValue((int)barra);
Timbrados.barraprogreso.repaint();
System.out.println((int)barra+"%");
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Se produjo un error al Generar las Facturas", "Mensaje del Sistema", JOptionPane.ERROR_MESSAGE);
this.limpiarCampos();
this.modoEdicion(false);
this.btnNuevo.grabFocus();
}
desde = desde + 1;
}
JOptionPane.showMessageDialog(null, "Se han generado todas las facturas", "Mensaje del Sistema", JOptionPane.INFORMATION_MESSAGE);
Timbrados.barraprogreso.setValue(0);
Timbrados.barraprogreso.setStringPainted(false);
this.limpiarCampos();
this.modoEdicion(false);
this.btnNuevo.grabFocus();
}
  #4 (permalink)  
Antiguo 17/03/2012, 10:48
 
Fecha de Ingreso: marzo-2012
Ubicación: Madrid
Mensajes: 74
Antigüedad: 12 años, 9 meses
Puntos: 12
Respuesta: barra de progreso no actualiza

Si quieres hacer algo asi tendras que meterte en programacion multihilo.
Uno realiza la tarea, y el otro actualiza/refresca la barra de progreso.
  #5 (permalink)  
Antiguo 19/03/2012, 00:36
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: barra de progreso no actualiza

Hola:

Java, por defecto, tiene un hilo que se encarga de repintar las ventanas y también de tratar los eventos de teclado y ratón. Si cuando se pulsa el teclado o ratón empiezas una tarea muy larga, estás ocupando ese hilo en tu tarea y no le dejas repintar ventanas, por ello, tu barra de progreso no avanza (no se repinta). Cundo termina tu tarea y liberas el hilo, java hace todo lo que tiene pendiente con las ventanas que hacer avanzar la barra de progreso varios pasos hasta el 100% ... pero a toda velocidad.

Para conseguir el efecto que quieres, debes, nada más pulsar el botón o lo que sea, lanzar un hilo nuevo que se encargue de tu tarea. De esta forma tu tarea deja de estar en el hilo de repintado de ventanas y tu barra de progreso se ira actualizando correctamente.

Estos dos enlaces pueden resultarte útiles

http://chuwiki.chuidiang.org/index.p...El_hilo_de_awt

http://chuwiki.chuidiang.org/index.p...on_SwingWorker

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: barra, netbeans, progreso, progressbar
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 00:43.