You have at least a couple options.
1) If using Java 6, there is a SplashScreen class. Read the API documentation
here 2) We are using Java 5, and the approach we have done is to create our own class that extends JFrame that we use as a splash screen. We create and show that class from our main class. We then use SwingWorker (you can get from SwingLabs) to do all our initialization off the EDT. When the worker finishes, we dispose of our splash screen and open the main window of our application.