* Typical usage: *
* SplashScreen splashScreen = new SplashScreen ("/com/company/splash.jpg");
* splashScreen.open (3000);
*
*
* @author Jacob Dreyer
*/
public class SplashScreen extends JWindow
{
private Image image_;
private int x_, y_, width_, height_;
/**
* Create a new splash screen object of the specified image.
* The image file is located and referred to through the deployment, not
* the local file system; A typical value might be "/com/company/splash.jpg".
*
* @param imageFileName Name of image file resource to act as splash screen.
*/
public SplashScreen (String imageFileName)
{
super (new Frame());
try {
Toolkit toolkit = Toolkit.getDefaultToolkit();
URL imageUrl = getClass().getResource (imageFileName);
image_ = toolkit.getImage (imageUrl);
MediaTracker mediaTracker = new MediaTracker (this);
mediaTracker.addImage (image_, 0);
mediaTracker.waitForID (0);
width_ = image_.getWidth (this);
height_ = image_.getHeight (this);
Dimension screenSize = toolkit.getScreenSize();
x_ = (screenSize.width - width_) / 2;
y_ = (screenSize.height - height_) / 2;
}
catch (Exception exception) {
exception.printStackTrace();
image_ = null;
}
}
/**
* Open the splash screen and keep it open for the specified duration
* or until close() is called explicitly.
*/
public void open (int nMilliseconds)
{
if (image_ == null) return;
Timer timer = new Timer (Integer.MAX_VALUE, new ActionListener() {
public void actionPerformed (ActionEvent event) {
((Timer) event.getSource()).stop();
close();
};
});
timer.setInitialDelay (nMilliseconds);
timer.start();
setBounds (x_, y_, width_, height_);
setVisible (true);
}
/**
* Close the splash screen.
*/
public void close()
{
setVisible (false);
dispose();
}
/**
* Paint the splash screen window.
*
* @param graphics The graphics instance.
*/
public void paint (Graphics graphics)
{
System.out.println ("paint");
if (image_ == null) return;
graphics.drawImage (image_, 0, 0, width_, height_, this);
}
}