Wie lässt sich ein Splashscreen erzeugen?v.6.0

Ab der Version 6 ist es in Java durch die Klasse SplashScreen nativ möglich, einen Splashscreen zu erzeugen. In vorhergehenden Versionen kann dies u.a. mit Hilfe der Klasse JWindow geschehen. Ein Beispiel hierfür ist im Artikel Splashscreen mit Fortschrittsanzeige zu finden.

Im Beispiel wird ein einfacher leerer JFrame erzeugt, der nach Schließen des Splashscreens sichtbar wird. Hierzu werden im Konstruktor zunächst die üblichen Frame-Eigenschaften, das Verhalten beim Beenden, seine Größe, die Position auf dem Bildschirm und sein Titel festgelegt.
Im darauf folgenden Thread wird die eigentliche Splashscreen-Steuerung durchgeführt. Er wird als Objekt vom Typ SplashScreen erzeugt. Die Pausierung des Threads für eine vorgegebene Zeit sorgt dafür, dass der Splashscreen solange angezeigt und ansschließend geschlossen wird. In der Folge wird das Hauptfenster sichtbar gesetzt.

import java.awt.SplashScreen;

import javax.swing.JFrame;

public class Splashscreen extends JFrame {

    private static final int SHOW_FOR = 3000;

    public Splashscreen() {

        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(500, 400);
        this.setLocationRelativeTo(null);
        this.setTitle("Splash-Demo");

        Thread t = new Thread() {
            public void run() {
                SplashScreen splash = SplashScreen.getSplashScreen();
                if (splash == null) {
                    System.out
                            .println("SplashScreen kann nicht erzeugt werden.");
                    return;
                }
                try {
                    Thread.sleep(SHOW_FOR);
                } catch (InterruptedException e) {
                    System.err.println("Thread unterbrochen");
                }
                splash.close();
                Splashscreen.this.setVisible(true);
            }
        };
        t.start();
    }

    public static void main(String[] args) {
        new Splashscreen();
    }
}

Das Anzeigen des Splashscreens erfolgt auf verschiedene Weise, abhängig von der Art und Weise des Programmstarts.
Als Dateitypen sind *.jpg, *.gif und *.png erlaubt.

  1. Die gängigste Form ist wohl der Start einer *.jar. Hier muss die gewünschte Image-Datei dem Archiv hinzugefügt werden und im Manifest die folgende Zeile eingetragen werden:
    SplashScreen-Image:<Pfad-zur-Imagedatei>
  2. Wird das Programm aus der Kommandozeile heraus als *.class gestartet, so wird der Aufruf des Splashscreens als VM-Parameter mitgegeben:
    java -splash:<Pfad-zur-Imagedatei> <programmname>
  3. Während der Entwicklungsarbeit mit Eclipse muss der VM-Parameter in den Run/Debug-Settings der Klasse eingetragen werden. Hierzu ruft man über einen Rechtsklick auf die Klasse im Package-Explorer die Properties und dort die Run/Debug-Settings auf. Im sich öffnenden Fenster wird der Name der Launch Configuration angezeigt, die nach Auswahl über einen Klick auf Edit bearbeitet werden kann. Unter dem Reiter (x)=Arguments kann unter VM Arguments java -splash:<Pfad-zur-Imagedatei> eingetragen werden. Sinnvoll ist es hierbei die Bilddatei unterhalb von src zu platzieren, sodass die Pfadangabe src/Pfad-zur-Imagedatei lauten muss.