Olá pessoal…
Hoje irei mostrar como fazer uma Splash Screen (tela de Splash) utilizando a linguagem Java.
Uma tela de Splash é uma tela de apresentação e de carregamento de um programa, que geralmente é mostrada enquanto carrega bibliotecas e dlls, como por exemplo, ao abrir o Libre Office, o Microsoft Office ou o Photoshop, eles mostram uma tela de Splash de carregamento.
Primeiramente, devemos ter uma imagem que será utilizada como Splash, iremos utilizar uma imagem com as dimisões de 700 x 300 (largura x altura), como abaixo:
A imagem ficará dentro de uma subpasta nomeada de ‘imagens’.
Temos que ter também, uma função que será chamada pelo Splash, no caso foi desenvolvido um menu simples com dois botões:
Abaixo os códigos fonte.
//Bibliotecas
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//Classe Splash, que extende da JFrame
public class Splash extends JFrame
{
private static JLabel lbSplash; //label responsável por conter a imagem
private ImageIcon imSplash; //imagem que será mostrada no label
//função principal que será carregada
public static void main(String arg[]){
//Criando a janela de Splash
Splash s = new Splash();
//definindo o tipo de fechamento, o tamanho, tirando a barra de títulos, deixando no centro, definindo um icone e mostrando a janela
s.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
s.setSize(700,300);
s.setUndecorated(true);
s.setLocationRelativeTo(null);
s.setVisible(true);
//forçando a espera de 1500 milissegundos (1,5 segundos)
try {
Thread.sleep (1500);
}
catch (InterruptedException ex) {}
//fechando a janela
s.dispose();
}
//função responsável por carregar os dados da janela (layout e imagem)
public Splash() {
//definindo o layout como nulo
setLayout(null);
//setando a imagem de splash
imSplash = new ImageIcon("imagens/splash_screen.png");
//adicionando a imagem no label e mudando o tamanho
lbSplash = new JLabel(imSplash);
lbSplash.setBounds(0,0,700,300);
//adicionando componentes na janela
add(lbSplash);
}
//função ao fechar a splash
public void dispose(){
//criar a tela de menu, e fechar o splash
new Menu();
super.dispose();
}
}
//Bibliotecas - Gráficos
import javax.swing.*;
import javax.swing.JOptionPane;
//Bibliotecas - Eventos
import java.awt.*;
import java.awt.event.*;
//Classe de Menu que é extendida da JFrame e implementa ActionListener
public class Menu extends JFrame implements ActionListener
{
//Declaração de botões - Ok, Cancelar e Esqueci
private JButton btOk, btCancel;
//Função que carrega dados da tela de login
public Menu() {
//setando o layout como null
setLayout(null);
//botão Ok
btOk = new JButton("OK");
btOk.setMnemonic('O');
btOk.setToolTipText("Botão OK");
btOk.setForeground(Color.RED);
btOk.addActionListener(this);
btOk.setBounds(20,15,100,20);
add(btOk);
//botão Cancelar
btCancel = new JButton("Cancelar");
btCancel.setMnemonic('C');
btCancel.setToolTipText("Botão Cancelar");
btCancel.setForeground(Color.RED);
btCancel.addActionListener(this);
btCancel.setBounds(20,45,100,20);
add(btCancel);
//Configurações da janela
setSize(150,120);
setLocationRelativeTo(null);
getContentPane().setBackground(Color.WHITE);
setTitle("Menu");
setResizable(false);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true);
}
//Interação com usuário - cliques nos botões
public void actionPerformed(ActionEvent acesso)
{
//botão Ok
if (acesso.getSource() == btOk) {
System.out.println("Botão OK pressionado!");
}
//botão Cancelar
if (acesso.getSource() == btCancel) {
System.out.println("Botão Cancelar pressionado!");
}
}
}
Se quiser fazer o download do código, clique aqui.
Bom pessoal, por hoje é só.
Abraços e até a próxima.


Cara o Swing já está obsoleto, seria bacana um tutorial com JavaFX, talvez utilizando os FXMLs que desacoplam o código que monta a tela com o que ela relativamente faz.
Bom dia Horacio.
Muito obrigado, nem sabia que o swing tava obsoleto, rs…
Vou dar uma estudada no JavaFX e faço um novo post.
Um grande abraço.
Tem um livro da casa do código muito bom sobre ele.
http://migre.me/pcTAF
Muito Obrigado Horacio.
Um grande abraço, vou dar uma estudada XD.