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.