import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class SplashWindow3 extends JWindow {

    private Thread splashThread;

	public SplashWindow3() {
		new SplashWindow3("Nature5.jpg", null, 10000);
	}

    public SplashWindow3(String filename, Frame f, int waitTime) {
        super(f);
        JLabel jLabel = new JLabel(new ImageIcon(filename));
        getContentPane().add(jLabel, BorderLayout.CENTER);
        pack();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension labelSize = jLabel.getPreferredSize();
        setLocation(screenSize.width/2  - (labelSize.width/2),
                    screenSize.height/2 - (labelSize.height/2));
        addMouseListener(new MouseAdapter() {
                public void mousePressed(MouseEvent e) {
                    setVisible(false);
                    dispose();
                    splashThread.interrupt();
                }
            });
        final int pause = waitTime;
        final Runnable closerRunner = new Runnable() {
                public void run() {
                    setVisible(false);
                    dispose();
                }
            };
        Runnable waitRunner = new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(pause);
                        SwingUtilities.invokeAndWait(closerRunner);
                    } catch (InterruptedException ie) {
	                    // sleep was interrupted
                    } catch (Exception e) {
                        e.printStackTrace();
                        // can catch InvocationTargetException
                    }
                }
            };
        setVisible(true);
        splashThread = new Thread(waitRunner, "SplashThread");
        splashThread.start();
    }

	public static void main(String[] args) {
		System.out.println("SplashWindow3...  Mouse click to terminate...");
		new SplashWindow3();
	}

}
