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

como cargar un JProgreesBar en tiempo Real

Estas en el tema de como cargar un JProgreesBar en tiempo Real en el foro de Java en Foros del Web. Hola, hace unos momentos pregunte al foro sobre un tema de Splash en windows con Java para una aplicacion, tengo otra aplicacion con BD pero ...
  #1 (permalink)  
Antiguo 23/09/2009, 18:26
Avatar de zaccarelliasbun  
Fecha de Ingreso: mayo-2009
Ubicación: Bolivia
Mensajes: 70
Antigüedad: 15 años
Puntos: 1
como cargar un JProgreesBar en tiempo Real

Hola, hace unos momentos pregunte al foro sobre un tema de Splash en windows con Java para una aplicacion, tengo otra aplicacion con BD pero quiero hacer que cargue la aplicacion y que al principio me muestre un JProgressBar pero en tiempo real, que a medida q demore en cargar la aplicacion que se refleje en una barra, he intentado de muchas maneras pero solo hago un FOR y lo llena de 1 a 100 pero no tiene buen aspecto. Por favor les pido que me ayuden no tengo ni idea de como hacerlo. Gracias

Nota: el JProgressBar va ir junto con un Splash, similar al Splash de NetBeans o iReport que muestra cuando iniciamos dichas aplicaciones.
  #2 (permalink)  
Antiguo 23/09/2009, 21:31
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: como cargar un JProgreesBar en tiempo Real

Hola,

Creo que NetBeans (e iReport basado en NetBeans) muestran un ProgressBar, tanto por que se tardan mucho (muchisimo) en cargar y porque son modulares. Si tu aplicación no carga componentes lógicamente separados, creo que una etiqueta 'Cargando...' es mas que suficiente.

Para darte un idea mas real, se podría implementar de la siguiente forma:

Código Java:
Ver original
  1. CargarModulo1();
  2. NotificarProgressBar(50); // 50%
  3. CargarModulo2();
  4. NotificarProgressBar(50);

Aunque en NetBeans y algunas otra aplicaciones cargan los módulos de forma dinámica, es decir que no se sabe cuantos módulos se van a cargar así que posiblemente usan algún tipo de enumerador.

Código Java:
Ver original
  1. ContarModulos();
  2. for (int i = 1; i <= CantidadModulos; i++) {
  3.   CargarSiguienteModulo();
  4.   NotificarProgressBar(CantidadModulos / i);
  5. }
Si tu aplicación no la puedes dividir en módulos, tendrías que interactuar con el ClassLoader (si es que es eso posible fácilmente) para saber cuanto tiempo le va a tomar terminar de cargar la única clase principal.

Saludos,
  #3 (permalink)  
Antiguo 24/09/2009, 18:20
Avatar de zaccarelliasbun  
Fecha de Ingreso: mayo-2009
Ubicación: Bolivia
Mensajes: 70
Antigüedad: 15 años
Puntos: 1
Respuesta: como cargar un JProgreesBar en tiempo Real

Gracias por responderme y te agradezco por tu tiempo, pero me puedes dar una idea o una orientación de como interactuar con el ClassLoader, busque ejemplos en google y solo hay ejemplos sobre J2EE, pero encontre algo mas o menos asi:

import java.net.*;

URLClassLoader Cargador = (URLClassLoader)ClassLoader.getSystemClassLoader() ;
URL[] cjto = Cargador.getURLs();
System.err.println("Classpath size: " + cjto.length);

for (int i=0; i < cjto.length; i++)
System.err.println(i + " " + cjto[i].toString());

el problema es q no se como interactuar, tengo q hacerlo antes de q cargue mi aplicacion? o a medida q vaya cargando voy preguntando al ClassLoader?

Saludos desde Bolivia.
  #4 (permalink)  
Antiguo 24/09/2009, 20:32
Avatar de zaccarelliasbun  
Fecha de Ingreso: mayo-2009
Ubicación: Bolivia
Mensajes: 70
Antigüedad: 15 años
Puntos: 1
Respuesta: como cargar un JProgreesBar en tiempo Real

en el ejemplo anterior que comentaste:

ContarModulos();
for (int i = 1; i <= CantidadModulos; i++) {
CargarSiguienteModulo();
NotificarProgressBar(CantidadModulos / i);
}

como puedo saber la cantidad de modulos que voy a cargar? es decir que modulo lo llamas a las clases donde existe un formulario? o tambien son las clases que no son formularios pero que se instancian? intenté de nuevo hacer un ejemplo de ProgressBar pero como no se cuantos modulos tengo que cargar entonces no se que valor pasarle al ProgressBar.

Saludos y nuevamente gracias por tu ayuda.
  #5 (permalink)  
Antiguo 24/09/2009, 21:45
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: como cargar un JProgreesBar en tiempo Real

Hola zaccarelliasbun,

A eso me refería específicamente, no creo que exista una manera sencilla de hacer eso que comentas, además de complejo es como decirlo ... 'no muy útil' en este caso. Y no lo recomiendo personalmente, aunque ...

Le llamo módulo a cada componente que agrega funcionalidad a tu aplicación (NetBeans le llama Componentes), en Java casi todo son clases, así que vendría siendo cualquier clase (un JFrame, un Object, etc., algo que tengas separado). Por ejemplo, en NetBeans puedes agregar el módulo para Java ME y este agrega muchas funcionalidades nuevas a NetBeans, específicas para Java ME.

Además tendrías que investigar mucho más puesto que posiblemente vas a experimentar comportamientos diferentes a una carga normal de una clase, diferentes threads de ejecución, etc.

Aun de esa forma, podrías probar con este código:

Este sería el módulo (clase) que vas a cargar dinámicamente.
Código Java:
Ver original
  1. package HelloWorld;
  2. public class HelloWorldPlugIn {
  3.     public HelloWorldPlugIn() {
  4.         javax.swing.JOptionPane.showMessageDialog(null, "Hello World!");
  5.     }
  6. }

La aplicación principal que carga el módulo HelloWorldPlugIn dinámicamente.
Código Java:
Ver original
  1. package HelloWorld;
  2. public class Main {
  3.     public static void main(String[] args) {
  4.         try {
  5.             Class hw = Class.forName("HelloWorld.HelloWorldPlugIn");
  6.             hw.newInstance();
  7.             // Actualizar el ProgressBar y pasar al siguiente 'modulo'
  8.             // Class hw2 = .... etc.
  9.         } catch (InstantiationException ex) {
  10.             ex.printStackTrace();
  11.         } catch (IllegalAccessException ex) {
  12.             ex.printStackTrace();
  13.         } catch (ClassNotFoundException ex) {
  14.             ex.printStackTrace();
  15.         }
  16.     }
  17. }

Ahora la cantidad de módulos, ¿como lo vas a saber?, contándolos y cargando uno a uno de la misma forma, en NetBeans tienen una lista en formato XML y enumera varias carpetas donde están los módulos, es decir, es un proceso muy complejo, cuando descargas de Internet un módulo nuevo en NetBeans, este lo agrega a la lista de cosas que tiene que cargar la próxima vez que lo abras.

Ahora ... para el caso que solo vas a cargar un módulo, es decir .. solo cargas tu aplicación principal y quieres saber cuanto tiempo va a cargar ... sé que se puede hacer puesto que NetBeans permite monitorear ese tipo de cosas con el plugin "Profiler" y NetBeans está hecho completamente en Java (aunque existe la posibilidad que necesite un par de librerías específicas del Sistema Operativo .dll) ... pero esto último sinceramente nunca lo he implementado.

Saludos,

Última edición por HackmanC; 24/09/2009 a las 21:56 Razón: Ortografía :)
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 19:10.