De este modo, por ejemplo, supongamos que tenemos un programa que cargará esta barra por tiempo, entonces su límite es 100 (100%), progreso será la posición donde estará el límite de la barra y valor actual será el valor comprendido entre 0 y 100 (el porcentaje que lleve). Pero nos falta algo más, si vamos a hacer por tiempo entonces necesitamos un contador que, a medida que aumenta, cresca la barra con este, para ello entonces hacemos lo siguiente:
for (int i = 0; i <= 100; i++) { for (long j=0; j < tiempo; ++j) { String barra = " " + (j + i); } setProgreso("Cargando " + i, i); //Este será nuestro progreso }De esta forma entonces ya tenemos la velocidad de carga de la barra, a mayor cantidad mas lento, puesto que es un contador, a medida que la variable "tiempo" aumente la barra lo hará también. Ahora debemos cargar el mensaje a la barra, de modo que muestre el texto "Cargando" a medida que se complete:
if (mensaje==null){ mensaje = ""; Barra.setStringPainted(false); } else{ Barra.setStringPainted(true); } Barra.setString(mensaje);Recordando que "Barra" es la variable de "JProgressBar", ahora necesitamos algo que le diga a la barra en que posición está para que esta haga el efecto de cargando.
final int progreso = progress; final String elMensaje = mensaje; setProgreso(progress); //Seteo del progreso final Barra.setValue(progreso); setMensaje(elMensaje);Una vez hecho esto, debemos indicar la variable final para que todo comience desde el principio, ya que como sabrán, esto es un ciclo, entonces todo vuelve a comenzar pero a partir de la posición donde terminó el ciclo, de esta forma logramos el efecto deseado.
final int progreso = progress; Barra.setValue(progreso);Ya sabiendo todo esto, entonces ya tenemos nuestra barra de progreso funcional, un ejemplo práctico de eso es el siguiente:
import javax.swing.*; import java.awt.*; public final class PantallaCargando extends JWindow { BorderLayout Layout = new BorderLayout(); JPanel PanelInferior = new JPanel(); FlowLayout PanelFlowLayout = new FlowLayout(); JProgressBar Barra = new JProgressBar(); public PantallaCargando() { dibujaVentana(); setLocationRelativeTo(null); setProgresoMax(100); setVisible(true); velocidadDeCarga(99999); } public void dibujaVentana() { getContentPane().setLayout(Layout); PanelInferior.setLayout(PanelFlowLayout); PanelInferior.setBackground(Color.BLACK); getContentPane().add(PanelInferior, BorderLayout.SOUTH); PanelInferior.add(Barra, null); pack(); } public void setProgresoMax(int maxProgress){ Barra.setMaximum(maxProgress); } public void setProgreso(int progress) { final int progreso = progress; Barra.setValue(progreso); } public void setProgreso(String mensaje, int progress) { final int progreso = progress; final String elMensaje = mensaje; setProgreso(progress); Barra.setValue(progreso); setMensaje(elMensaje); } private void setMensaje(String mensaje) { if (mensaje==null){ mensaje = ""; Barra.setStringPainted(false); } else{ Barra.setStringPainted(true); } Barra.setString(mensaje); } public void velocidadDeCarga(int tiempo) { for (int i = 0; i <= 100; i++) { for (long j=0; j < tiempo; ++j) { String barra = " " + (j + i); } setProgreso("Cargando " + i, i); } dispose(); } @SuppressWarnings("ResultOfObjectAllocationIgnored") public static void main(String[] args) { new PantallaCargando(); } }Con esto ya tenemos nuestra barra de progreso "por tiempo", solo debemos tener en cuenta la velocidad de carga que la aumentamos y disminuimos en el método "velocidadDeCarga(valor_entero)".
Recibe notificaciones por correo
2 Comentarios
Escribir Comentariogenial!! funciona perfecto
ResponderHola Carlitos.. Muy bueno esta el codigo! gracias..
ResponderLamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.
Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión