Desenvolvendo splash screens para suas aplicações

Esta dica de Swing apresenta um método de executar sua própria tela de apresentacao. Ela é uma aplicação simples, útil mostrar uma imagem do título do programa no centro da tela durante a quantidade de tempo passada no construtor. Esta classe inclui um método main() para testar a tela de apresentacao.

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();        
    }
}