Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 309
  • Last Modified:

Splash (logo) screen in Java

How to display an application logo screen (a rectangular graphic) in Java? From what I know every Java application must start with a frame but I need to start it with some kind of container with no buttons or titlebars but with an image inside.
0
mrmind3
Asked:
mrmind3
1 Solution
 
stalefishCommented:
I found this at http://www.tactika.com/realhome/realhome.html

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 {
     public void windowActivated(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);
     }      
   }
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now