]> git.gag.com Git - sw/motorsim/blob - gui/SplashWindow3.java
Add Splash Screen
[sw/motorsim] / gui / SplashWindow3.java
1 import java.awt.BorderLayout;
2 import java.awt.Dimension;
3 import java.awt.Frame;
4 import java.awt.Toolkit;
5 import java.awt.event.MouseAdapter;
6 import java.awt.event.MouseEvent;
7
8 import javax.swing.ImageIcon;
9 import javax.swing.JLabel;
10 import javax.swing.JWindow;
11 import javax.swing.SwingUtilities;
12 class SplashWindow3 extends JWindow {
13         public SplashWindow3(String resName, Frame f, int waitTime) {
14                 super(f);
15                 JLabel l = new JLabel(new ImageIcon(this.getClass().getResource(resName)));
16                 getContentPane().add(l, BorderLayout.CENTER);
17                 pack();
18                 Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
19                 Dimension labelSize = l.getPreferredSize();
20                 setLocation(screenSize.width / 2 - (labelSize.width / 2), screenSize.height / 2 - (labelSize.height / 2));
21                 addMouseListener(new MouseAdapter() {
22                         public void mousePressed(MouseEvent e) {
23                                 setVisible(false);
24                                 dispose();
25                         }
26                 });
27                 final int pause = waitTime;
28                 final Runnable closerRunner = new Runnable() {
29                         public void run() {
30                                 setVisible(false);
31                                 dispose();
32                         }
33                 };
34                 Runnable waitRunner = new Runnable() {
35                         public void run() {
36                                 try {
37                                         Thread.sleep(pause);
38                                         SwingUtilities.invokeAndWait(closerRunner);
39                                 } catch (Exception e) {
40                                         e.printStackTrace();
41                                         // can catch InvocationTargetException
42                                         // can catch InterruptedException
43                                 }
44                         }
45                 };
46                 setVisible(true);
47                 Thread splashThread = new Thread(waitRunner, "SplashThread");
48                 splashThread.start();
49         }
50         
51
52         public static void main(String args[]) {
53          SplashWindow3 sw = new SplashWindow3("splash.png",null, 4000);
54         }
55 }