Una Pantalla Cargando con Imagen para mi Aplicacion JAVA

15 07 2008

Casi siempre , cuando ejecutamos alguna aplicacion(open office, gimp, amarok, froswire, etc), nos muestra una ventana indicando q la aplicacion esta cargando. entonces, hay casos cuando desarrollamos alguna aplicacion independiente del lenguaje, y deseamos q al iniciar nuestro programita, tambien muestre una “pantalla de carga”, eso en JAVA tambien es posible.

Solo necesitamimos implementar un par de clases, y un archivo Imagen, la primera clase es la que dibujara la ventana y configurar la velocidad de carga, el dibujo en mi caso est, arriba la imagen, y debajo un scroll, pero es configurable( al gusto del usuario… jejee mejor dicho del desarrolador), esta misma primera clase(PantallaCargando) hereda de JWindow, pero tambien puede heredar de JFrame, la diferencia creo q al momento de cargar, jWindow, te permite ocultar a pantalla cargando, con solo un click, un mismo amarok… jFrame no.

La velocidad de carga es confugurable, solo tienes q modificar el metodo “velocidadDeCarga”, bueno, el resto del codigo creoq es muy facil interpretarlo, aqui el fuente;

import javax.swing.*;
import java.awt.*;
/*DEMO POR INFORUX*/
public class PantallaCargando extends JWindow {
  BorderLayout borderLayout1 = new BorderLayout();
  JLabel imageLabel = new JLabel();
  JPanel southPanel = new JPanel();
  FlowLayout southPanelFlowLayout = new FlowLayout();
  JProgressBar progressBar = new JProgressBar();
  ImageIcon imageIcon;

  public PantallaCargando(ImageIcon imageIcon) {
    this.imageIcon = imageIcon;
    dibujaVentana();
  }

  public void dibujaVentana() {
    imageLabel.setIcon(imageIcon);
    this.getContentPane().setLayout(borderLayout1);
    southPanel.setLayout(southPanelFlowLayout);
    southPanel.setBackground(Color.BLACK);
    this.getContentPane().add(imageLabel, BorderLayout.CENTER);
    this.getContentPane().add(southPanel, BorderLayout.SOUTH);
    southPanel.add(progressBar, null);
    this.pack();
  }

  public void setProgresoMax(int maxProgress)
  {
    progressBar.setMaximum(maxProgress);}

  public void setProgreso(int progress)
  {
    final int progreso = progress;
        progressBar.setValue(progreso);}

  public void setProgreso(String message, int progress)
  {
    final int progreso = progress;
    final String theMessage = message;
    setProgreso(progress);
    progressBar.setValue(progreso);
    setMessage(theMessage);  }

  private void setMessage(String message)
 {
    if (message==null){
      message = "";
      progressBar.setStringPainted(false);}
    else{
      progressBar.setStringPainted(true);}

    progressBar.setString(message); }

public void velocidadDeCarga(){
    for (int i = 0; i <= 100; i++)
    {
      for (long j=0; j<100000; ++j)//modifica el numero segun la velidad q desees
      {
        String poop = " " + (j + i);
      }
     setProgreso("" + i, i);  // si quieres q muestre los numeros y un mensaje
     //setProgreso(i);        //si no quieres q muestre nada, solo la barra
   }
    dispose();}

}

La segunda clase(PantallaCargandoMain), en otras palabras no es mas q la clase q llama al primero creando un objeto de la primera(PantallaCargando), y aplicandoles los metodos, OJO q en el metodo “inicioPantalla”. hay q darle la ruta de la imagen q deseamos. en mi caso hay una carpeta con el nombre “imagen”, y dentro de ella esta la imagen fisica.

import javax.swing.UIManager;
import javax.swing.ImageIcon;

public class PantallaCargandoMain {

  PantallaCargando screen;

  public PantallaCargandoMain() {
    inicioPantalla();
	screen.velocidadDeCarga();
  }

  private void inicioPantalla() {
    ImageIcon myImage = new ImageIcon("imagen/java.gif");
    screen = new PantallaCargando(myImage);
    screen.setLocationRelativeTo(null);
    screen.setProgresoMax(100);
    screen.setVisible(true);
  }

  public static void main(String[] args)
  {
    new PantallaCargandoMain();
  }
}

Ahora, puedes compilar (javac PantallaCargandoMain.java) y debe funcionar, o agregar estas 2 clases en la carpeta de tu aplicacion, y en la clase q inicias tu aplicacion, en el metodo “main” de tu proyecto, incluye solo una linea;

new PantallaCargandoMain();

Y listo.

Aqui un pantallazo

PD: la imagen puedes descargar Aqui

Venga un saludo.


Acciones

Información

11 respuestas

16 08 2008
Darko Demon

Pues Muchisimas GRACIAS XD, me sirvio de mucho, desde hace ya varios dias queria hacer un pantallazo asi, gracias amigo.

27 08 2008
Claudio

Muchas gracias!!

Muy buena la explicación.. y el código fácil de entender :)

salu2

29 09 2008
luis

en que carpeta meto la foto

1 10 2008
Jhon Henry

Muchas gracias, está muy bien.

22 10 2008
thomas

que nuevas novedades tienes con respecto a pantallas cargando en java

30 10 2008
fernando

muy bueno el programa y muy sencillo de entender muchisimas gracias pero no me sale la imagen no se xq dime donde se guarda la imagen creoq e s x esooo sii te agradeceria muchisimoo pero ta bien el programitaa

30 10 2008
inforux

En el metodo “inicioPantalla() ” de la clase “PantallaCargandoMain” esta la linea donde colocar la ruta de nuestra imagen.
ImageIcon myImage = new ImageIcon("imagen/java.gif");
En ese caso se puede remplazar por cuaquier directorio donde esta la imagen.
Por otro lado escribir un directorio especifico tiene desventajas (al momento de ejecutarlo en sistemas NT.),es por eso q de preferencia las imagenes y otros archivo deben estar dentro del directorio Pricipal del proyecto.
En mi caso esta asi:
I->Directorio: Proyecto (donde estan todas las clases(incluyendo las del ejemplo)
—–>Directorio: Imagen (dentro de la carpeta Proyecto donde hay solo imagenes)
—–>Otros Directorios.

Espero se haya entendido.
Saludos.

30 03 2009
robextrem

excelente!

Me parecen muy buenas las tematicas que se manejan en este blog!

sigan asi!

31 05 2009
el mejor

muchisimas gracias kpo me sirvio de mucho..

28 07 2009
andrew

ola esta weno este espacio
tengo una pregunta
porque solo me carga la barra de progreso pero no me sale la imagen y le indico bn
el path de la ubicacion del imagen :s el codigo lo tengo asi:

private void inicioPantalla() {
ImageIcon myImage = new ImageIcon(“Imagenes/java.gif”);
screen = new PantallaCargando(myImage);
screen.setLocationRelativeTo(null);
screen.setProgresoMax(100);
screen.setVisible(true);

//tal cual como esta en la web
no se porque no me carga la imagen

28 10 2009
UchihaLuis

Andrew el error que tienes en el código la ruta es “imagen/java.gif”. Entonces tienes que crear una carpeta con el nombre de “imagen”dentro del proyecto y dentro de esta guardar la imagen “java.gif”.

Gracias por el aporte… está bkno y con esto quedan los proyectos más puliditos…

Deja un comentario