Display a Splash screenTag(s): AWT
This Splash class display a window containing a specified image while a parent Frame is doing its initialization. When the parent is activated, the Splash window is destroyed.
[JDK1.1] import java.awt.*; import java.awt.event.*; public class Splash extends Window { private Image splashImage; private int imgWidth, imgHeight; private String imgName; private static final int BORDERSIZE = 5; private static final Color BORDERCOLOR = Color.blue; Toolkit tk; public Splash(Frame f, String imgName) { super(f); this.imgName = imgName; tk = Toolkit.getDefaultToolkit(); splashImage = loadSplashImage(); showSplashScreen(); f.addWindowListener(new WindowListener()); } public Image loadSplashImage() { MediaTracker tracker = new MediaTracker(this); Image result; result = tk.getImage(imgName); tracker.addImage(result, 0); try { tracker.waitForAll(); } catch (Exception e) { e.printStackTrace(); } imgWidth = result.getWidth(this); imgHeight = result.getHeight(this); return (result); } public void showSplashScreen() { Dimension screenSize = tk.getScreenSize(); setBackground(BORDERCOLOR); int w = imgWidth + (BORDERSIZE * 2); int h = imgHeight + (BORDERSIZE * 2); int x = (screenSize.width - w) /2; int y = (screenSize.height - h) /2; setBounds(x, y, w, h); setVisible(true); } public void paint(Graphics g) { g.drawImage(splashImage, BORDERSIZE, BORDERSIZE, imgWidth, imgHeight, this); } class WindowListener extends WindowAdapter { // was windowActivated, thanks to H.Grippa for the fix! public void windowOpened(WindowEvent we) { setVisible(false); dispose(); } } }
import java.awt.*; import java.awt.event.*; public class TestSplash { MyFrame theFrame; public static void main (String args[]){ TestSplash t = new TestSplash(); t.createMainFrame(); } private void createMainFrame() { theFrame = new MyFrame("A Dummy Frame"); theFrame.setVisible(true); } } class MyFrame extends Frame { Splash mySplash; public MyFrame(String title){ super(title); addWindowListener (new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); mySplash = new Splash(this, "jht.gif"); // dummy delay so we can see the Splash! for(int i = 0; i < 3000; i++) { System.out.println(i) ; } setSize(200,200); } }