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();
      }
    }
}
The following example use this image (jht.gif) as the splash image.
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);
    }
}

blog comments powered by Disqus