Está en la página 1de 5

Una Pantalla Cargando con Imagen para

mi Aplicacion JAVA
15072008
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

También podría gustarte