C
Erst einmal die Beantwortung der Frage "Wozu ein Splashscreen". Generell wird ein SplashScreen immer nur dann verwendet, wenn der Start und das zur Verfügung stehen der gestarteten Applikation eine ganze Weile dauert und man den Benutzer nicht verunsichern will ob die Applikation nun tatsächlich schon gestartet wurde. D.h. der SplashScreen dient nur zur Überbrückung einer gewissen Wartezeit. Demzufolge muss ein Programm etwa folgenden Ablauf besitzen:
Programmstart
Anzeige des SplashScreens (in der Regel Produktinfo)
Zeitaufwendige Initialisierung des Programms
Ausblenden des SplashScreens
Benutzung des Programms
Programmende
Damit das nun so funktioniert, muss man wie in dem von dir geposteten Beispiel ein JWindow benutzen, welches der Benutzer nicht schließen kann. Das Schließen des JWindow muss das Programm von selbst tun. Damit hast du bereits einen einfachen SplashScreen. Nun ist es aber so, dass viele Programme bei der Initialisierung (beispielsweise NetBeans) Informationen im SplashScreen anzeigen darüber was gerade getan wird (Reading Database, Setting up editor etc.). Um dies machen zu können muss der SplashScreen in einen eigenen Thread ausgelagert werden, damit er die Chance hat sich zu aktualisieren. Wenn man dies nicht macht wird aufgrund der zeitraubenden Initialisierung dem SplashScreen keine CPU-Zeit gegeben und die Kommandos in der MessageQue werden nicht abgearbeitet.
Um selbst einen SplashScreen zu erstellen würde ich dir vorerst zur einfachen Variante raten - dem einfachen Einblenden eines Fensters mit Produktinfo. Alles andere ist dann schon eine Schwierigkeitsstufe höher. Hoffe ich konnte dir helfen.