lunes, 4 de abril de 2011

Breve apunte de programación con Java. ProgressMonitor

Siguiendo con los breves apuntes de programación con Java, hoy hablaremos de una clase muy simple y muy útil que nos brinda Java para monitorizar procesos en nuestros programas de escritorio con Swing.

La clase se llama ProgressMonitor y se construye así:
new ProgressMonitor(Component parentComponent,
  Object message, String note, int min, int max);

Aunque parece bastante claro qué es cada cosa, parentComponent es el componente del que depende la ventana que creará la clase ProgressMonitor y puede ser null, message es el mensaje que mostrará el diálogo en la línea superior, note es la cadena que se mostrará debajo de la anterior y sobre la barra de progreso, min es el valor mínimo de la barra de progreso y max el máximo.

Veamos un ejemplo y cómo se vería:
ProgressMonitor pm = new ProgressMonitor(null, "Importación de Datos",
  "Realizando Importación...", 0, 100);  
pm.setNote("Insertando Albaranes...");
pm.setProgress(0);
new Thread()
{
  public void run()
  {
    hacerCositas(); // en éste método se actualiza pm con 
                    // pm.setProgress(x) para cada registro
  };
}.start();

Se vería más o menos así:

Es muy importante tener en cuenta que para que funcione correctamente ProgressMonitor debe ser actualizado desde un Thread ya que si no se hace así no se actualizará y se mostrará un diálogo completamente estático en el mejor de los casos, a veces ni se muestra.

También conviene recordar que si el proceso tarda menos de 500 milisegundos no se muestra el diálogo. Esta cifra también se puede cambiar.

Para más información es interesante leer Tutorial de uso de Barras de Progreso y ProgressMonitor (en inglés) de Oracle.

2 comentarios:

  1. Gracias Leandro por tu comentario. Yo dije lo mismo cuando tras escribirlo lo leí para publicar... ¿o no lo llegué a leer? no me acuerdo... :-)

    ResponderEliminar