quarta-feira, 20 de março de 2013

Criando Tela de Apresentação em Java



Fala galera! Depois de um tempo fora (cerca de 1 mês), por ócios do ofício, volto com um post bem legal de uma necessidade que tive em um projeto que estou atuando. Um dos módulos do projeto era desktop, e com isso, percebi que a tela de apresentação estava muito sem graça.

Vendo isto, recordei de alguns sistemas e até mesmo jogos que, sempre antes da tela principal, aparecem algumas janelas com logo da empresa, ano de desenvolvimento etc. Então pensei "vou desenvolver isso". Então o fiz e hoje mostro para vocês como criar as suas telas de apresentação.


import java.awt.*;
import javax.swing.*;
public class SplashScreen extends JWindow {
    
    private int duration;
    
    public SplashScreen(int d) {
        duration = d;    }
    
// Este é um método simples para mostrar uma tela de apresentção
// no centro da tela durante a quantidade de tempo passada no construtor

    public void showSplash() {        
        JPanel content = (JPanel)getContentPane();
        content.setBackground(Color.white);
        
        // Configura a posição e o tamanho da janela

        int width = 450;
        int height =115;
        Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
        int x = (screen.width-width)/2;
        int y = (screen.height-height)/2;
        setBounds(x,y,width,height);
        
        // Constrói o splash screen

        JLabel label = new JLabel(new ImageIcon("devmedia.gif"));
        JLabel copyrt = new JLabel
                ("Copyright 2006, DevMedia", JLabel.CENTER);

        copyrt.setFont(new Font("Sans-Serif", Font.BOLD, 12));
        content.add(label, BorderLayout.CENTER);
        content.add(copyrt, BorderLayout.SOUTH);
        Color oraRed = new Color(1562020,  255);
        content.setBorder(BorderFactory.createLineBorder(oraRed, 10));        
        // Torna visível
        setVisible(true);
        
        // Espera ate que os recursos estejam carregados

        try { Thread.sleep(duration); } catch (Exception e) {}        
        setVisible(false);        
    }
    
    public void showSplashAndExit() {        
        showSplash();
        System.exit(0);        
    }
    
    public static void main(String[] args) {        
        // Mostra uma imagem com o título da aplicação 
        SplashScreen splash = new SplashScreen(10000);
        splash.showSplashAndExit();        
    }
}


Com as devidas adaptações para meu projeto, o código ficou assim:


public class SplashScreen extends JWindow implements Runnable {

    private int duration;
    boolean vai;
       public static String servidor;

    public SplashScreen(int d) {
        duration = d;
    }

    @Override
    public void run() {
        vai = true;
        while (vai) {
            JPanel content = (JPanel) getContentPane();
            content.setBackground(Color.white);

            // Configura a posição e o tamanho da janela

            int width = 450;
            int height = 400;
            Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
            int x = (screen.width - width) / 2;
            int y = (screen.height - height) / 2;
            setBounds(x, y, width, height);

            // Constrói o splash screen

            JLabel label = new JLabel(new javax.swing.ImageIcon(getClass().getResource("/br/com/sispav/imagens/logoSplash.png")));
            JLabel copyrt = new JLabel("Copyright 2013, Infomobile/Execute/Elite Segurança.\nTodos os direitos resevados.", JLabel.CENTER);
            copyrt.setFont(new Font("Sans-Serif", Font.BOLD, 10));
            content.add(label, BorderLayout.CENTER);
            content.add(copyrt, BorderLayout.SOUTH);
            Color oraRed = new Color(121, 158, 191);
            content.setBorder(BorderFactory.createLineBorder(oraRed, 10));
            // Torna visível
            setVisible(true);

            // Espera ate que os recursos estejam carregados

            try {
                Thread.sleep(duration);
            } catch (Exception e) {
            }
            inicia();
            setVisible(false);
            vai = false;
         
        }

    }

    public static void main(String[] args) {
        // Mostra uma imagem com o título da aplicação
        SplashScreen splash = new SplashScreen(10000);
        splash.run();
    }

Espero que tenham gostado! Abraços!

Analista Especialista Em Desenvolvimento de Sistemas UFPA/FACI
3 Publicações Nacionais e 1 Internacional.
Coordenador do Grupo de Pesquisa e Desenvolvimento de Softwares Faculdade Ideal
Moderador do BelJug.
Email: brunor.santos@yahooo.com.br
Criador do Blog JaTAvaNaMente: http://javanamente.blogspot.com



Nenhum comentário:

Postar um comentário

Admin: Bruno

Olá Galera! muito grato por estarem acessando nosso blog. Espero que seja possível transmitir de forma compreensível um pouco de meus conhecimentos em programação, para esta comunidade de desenvolvedores que cresce cada vez mais! Espero que Gostem! Abraço! E meu enorme obrigado à Renato Simões, Átila Soares,Wanderson Quinto, Emerson e a toda galera que sempre ajudou meu sincero obrigado....
Especialmente a Natalia Failache e Rita de Cassia que sempre apoiaram este sonho....

De seu amigo Bruno Rafael.