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

Information

35 responses

16 08 2008
Darko Demon

Pues Muchisimas GRACIAS😄, 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…

18 11 2009
Carlos

Camara men, muhcas gracias, eres bien chingon

29 07 2010
Renan

Excelente, mil gracias amigo me ayudó bastante….

1 12 2010
Jess

Wow excelente tutorial, me sirvio de mucho para la presentacion de mi proyecto.
saludos
y gracias por compartir

23 12 2010
Yohe

Hello…
todo buenísimo… genial….
pero me sucede lo siguiente: después cuando quiero que se muestre la primera forma, yo diría la forma principal del proyecto, no tiene el estilo de window, sino el metálico… cómo hago para cambiarlo??? please…

11 01 2011
reytapia

bueno biennnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

11 04 2011
jorge luis leguizamo

oye como van las partes copie la 1 y le pege la 2 y no meda lo hise en viceverza y tampoco como compilo?

21 05 2011
Angel González

crea las dos clases, luego la que correras es la que se llama PantallaCargandoMain, ya que es la que tiene el método main() y posee el objeto de la clase PantallaCargando…

10 07 2011
Alberto

Hey amigos yo tambien tenia el problema de que solo salia la barrita cargando pero la imagen no, y lo arregle así:

En la clase de PantallaCargandoMain solo cambie la linea de

ImageIcon myImage = new ImageIcon(“Imagenes/java.gif”);

Por esta:

ImageIcon myImage = new ImageIcon(PantallaCargandoMain.class.getResource(“imagenes/java.gif”));

y funciono perfecto, espero a más de uno le ayude, y exelente blog por cierto .

22 04 2012
Davis

este codigo no funciona en netbeans como hago para q me funcione

9 10 2012
Aldo Gamaliel

@luis me imagino que en la carpeta de tu proyecto

8 11 2012
chino

Que buen tutorial, pero aun no consigo lograr que me aparezca la imagen

23 11 2012
Anónimo

Muy buen ejemplo!!!, gracias

23 11 2012
Anónimo

Yo también estaba batallando para que mostrara la imagen y la línea finalmente quedó así:
ImageIcon myImage = new ImageIcon(getClass().getResource(“/imagenes/imagen.gif”));

Con esto pude visualizar la imagen🙂.

27 11 2012
zara

genial!!!

1 02 2013
Anónimo

Nó tengó java cmo le ahó para tenerló es muy impórtante

1 04 2013
Gera

Muchas gracias me sirve a la prefeción, se te agradece la ayuda bro

27 02 2014
Anónimo

me marca error en estos
screen.velocidadDeCarga();
}

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

2 06 2014
Anónimo

Hola😀 muchas gracias por el código..pero una duda. En mi aplicación necesito cargar un archivo y eso tarda, así que necesito esa pantalla dentro de un botón. Como lo puedo mandar llamar la ventana dentro del botón?

2 06 2014
MinimayusQla Reyes

Hola😀 muchas gracias por el código..pero una duda. En mi aplicación necesito cargar un archivo y eso tarda, así que necesito esa pantalla dentro de un botón. Como lo puedo mandar llamar la ventana dentro del botón?

8 07 2014
Anónimo

Y para modificar el tamaño de la imagen a mostrar?
porque solo sale una ventana muy pequeña:/

8 07 2014
Anónimo

Perdona, ya lo soluciones😉 (Y)

8 07 2014
Anónimo

Perdona, ya lo solucione😉 (Y)

25 09 2014
Daniel

la imagen nunca la pude descargar:/

24 07 2015
Anónimo

nunca puede descargar la imagen

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: