/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.gui; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Frame; import java.awt.Toolkit; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.lang.reflect.InvocationTargetException; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JWindow; import javax.swing.SwingUtilities; /** * Affiche une mire de d�marrage. * * @version $Revision: 1.3 $ * * */ public class SplashScreen extends JWindow { /** * Constructor for the SplashScreen object * * @param filename R�pertoire du fichier image * @param frm Une Frame * @param waitTime Temps d'affichage */ public SplashScreen(String filename, Frame frm, int waitTime) { this(new ImageIcon(filename), frm, waitTime); } /** * Constructeur de SplashScreen * * @param icon Description of Parameter * @param frm Description of Parameter * @param waitTime Description of Parameter */ public SplashScreen(Icon icon, Frame frm, int waitTime) { super(frm); JLabel l = new JLabel(icon); getContentPane().add(l, BorderLayout.CENTER); pack(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension labelSize = l.getPreferredSize(); setLocation(screenSize.width / 2 - (labelSize.width / 2), screenSize.height / 2 - (labelSize.height / 2)); addMouseListener(new MouseAdapter() { /** * DOCUMENT ME! * * @param e Description of Parameter */ public void mousePressed(MouseEvent e) { setVisible(false); dispose(); } }); final int pause = waitTime; final Runnable closerRunner = new Runnable() { /** * Main processing method for the SplashScreen object */ public void run() { setVisible(false); dispose(); } }; Runnable waitRunner = new Runnable() { /** * Main processing method for the SplashScreen object */ public void run() { try { Thread.sleep(pause); } catch (Exception ex) { ex.printStackTrace(); // can catch InvocationTargetException // can catch InterruptedException }finally{ try { SwingUtilities.invokeAndWait(closerRunner); } catch (Exception e) { e.printStackTrace(); } } } }; setVisible(true); Thread splashThread = new Thread(waitRunner, "SplashThread"); splashThread.start(); } }