Una ventana splash es una ventana de presentación ; sin los botones clásicos y que va a servir para darle una mejor presentación a nuestro proyecto.
Esta ventana se debe colocar al principio de nuestra aplicación; para empezar debemos diseñar la que será nuestra imagen de presentación la cual por motivos de tiempo elegí la de NetBeans ; y a esta le vamos a agregar una barra de progreso :
- Abrimos el NetBeans y creamos un nuevo proyecto , el cual lo desmarcamos para que no cree la clase main :
- Creamos el folder en donde irá nuestra imagen; para ello clic derecho en Source Package → New → Other por lo que saldrá una ventana en la cual debemos elegir Other → Folder y finalmente le damos el nombre que queramos :
- Ahora creamos un paquete Splash en el cual vamos a agregar un JFrame y también creamos una clase para el hilo que vamos a usar , por lo que les debe quedar así :
- Vamos a trabajar en nuestro Frame, al cual le hacemos clic derecho → SetLayout y le damos BorderLayout hecho esto colocamos dos paneles : uno en el sur y otro en el centro (seguir el orden para no tener complicaciones). Después de haber agregado los paneles a cada uno le vamos a dar BorderLayout al igual que al frame. Hecho esto vamos a colocar en el panel del sur un JProgressBar al que le vamos a llamar progreso y en el panel central una etiqueta; nos debe quedar así :
- Para cambiar el nombre del JProgresBar podemos darle clic derecho a la barra y elegimos “Change Variable name” a continuación nos saldrá la siguiente ventana en la cual debemos colocar el nombre de la barra :
- En el panel central vamos a colocar una etiqueta al cual le vamos a colocar una imagen, ver esta entrada para ver como ccolocar una imagen :
- En el diseñador del JFrame nos vamos a agregar código , para ello hacemos clic en en boton source ; y ya en la clase del JFrame (al cual llame Principal) le agregamos un objeto Hilo :
import java.awt.Color;
public class Principal extends javax.swing.JFrame
{
HiloProgreso hilo;
- Vamos a el constructor y le agregamos el siguiente código :
public Principal()
{
//Método por defecto
initComponents();
iniciarSplash();
//Creamos un objeto HiloProgreso al cual
//le pasamos por parámetro la barra de progreso
hilo=new HiloProgreso(progreso);
//Iniciamos el Hilo
hilo.start();
//Le damos tamaño y posición a nuestro Frame
this.setLocation(200,200);
this.setSize(472,249);
//Liberamos recursos
hilo=null;
}
- Creamos un método get para nuestro JProgressBar , para ello o bien lo agregamos directamente o bien hacemos que el NetBeans lo genere , para ello clic derecho sobre el atributo → seleccionamos Refactor → Seleccionamos Encapsule Fields y en la ventana que aparece simplemente seleccionamos los métodos set y get que deseamos que NetBeans genere
- Hecho esto aparecerá la siguiente línea de código :
public javax.swing.JProgressBar getjProgressBar1() {
return progreso;
}
- Ahora si podemos crera nuestro método iniciar Splash :
public void iniciarSplash() {
this.getjProgressBar1().setBorderPainted(true);
this.getjProgressBar1().setForeground(new Color(50, 50, 153, 100));
this.getjProgressBar1().setStringPainted(true);
}
- NetBeans nos debe estar marcando un error , esto se da porque aún no hemos creado nuestra clase HiloProgreso ; para ello clic en el paquete Splash → New → Java Class y a la clase le damos de nombre HiloProgreso y la vamos hacer que extienda de Thread ; en esta clase debemos crear una referencia a la barra de progreso que vamos a pasar por parámetros para lo cual declaramos un JProgressBar progreso :
package Splash;
import javax.swing.JProgressBar;
public class HiloProgreso extends Thread
{
JProgressBar progreso;
- Ahora vamos a crear nuestro método constructor el cual va a tener como parámetros una barra de progreso1 , se debe observar como se da la relación de asociación ; es decir la referencia del objeto que pasó por parámetro la asigno a la referencia que cree anteriormente y con esto puedo usar todos sus métodos (el super es para llamar al método constructor de la clase Thread y por ley debe ser la primera línea en el método constructor de la clase hija) :
public class HiloProgreso extends Thread
{
JProgressBar progreso;
public HiloProgreso(JProgressBar progreso1)
{
super();
this.progreso=progreso1;
}
- Hecho esto vamos a crear el método run que va a servir para correr el hilo :
public void run()
{
for(int i=1;i<=100;i++)
{
progreso.setValue(i);
pausa(100);
}
}
- Y por último creamos nuestro método pausa , que como el nombre indica nos va a dar una pausa para que la barra de progreso no llegue al 100% n bien corramos la aplicación :
public void pausa(int mlSeg)
{
try
{
// pausa para el splash
Thread.sleep(mlSeg);
}catch(Exception e){}
}
- Hecho esto presionamos F6 y veremos algo como esto :
- El ejemplo lo pueden descargar desde aquí :
* Si el link de descarga no funciona, por favor ir a la sección de carpeta compartida que se encuentra a la derecha , esta les enviará directamente a mi carpeta compartida → en la carpeta compartida ir a Ejemplos → Ejemplos de Java → Cap_18_NetBeans → Splash.
* Respecto a llamar una aplicación despues de terminado el splash les pediría tiempo para modificar la aplicación y que haga eso ( a mas tardar mañana lo estoy modificando)
... Leer más ...