JDialog als SplashScreen

Guadrion

Mitglied
Hi Leute und zwar brauche ich einen besonderen SplashScreen.
Ich möchte dass wie üblich Bild und Text darauf sind, möchte allerdings auch 2 Eingabefelder darin haben.

Nun zu meinem Problem:
Die Klasse würde ich ableiten von JDialog :
Code:
public class SplashScreen extends JDialog {
	public SplashScreen(String file) {
        super(?, true)
        }
}
1. Problem: Ich habe eine Klasse Controller, die eigentlich nur dazu da ist, um das Programm zu starten: Sie gibt eine Referenz auf die Model Fassade an die von ihr gestartet GUI weiter. Ich hab nun das Problem dass ich keinen Owner habe, wenn ich mit super(null, true) den JDialog Konstruktor aufrufe hat er keine ahnung von welchem typ "null" is

2. Problem: ich möchte elegant die auswahl aus den jComboBoxen iwie zurückgeben ohne dazu auf einen extra Listener zurückgreifen zu müssen. Das heißt der Controller soll nach Aufruf nichts tun bis die Antwort aus dem JDialog kommt. Allerdings hab ich keine Ahnung wie man diese Antwort elegant übergeben kann^^ Habt ihr eine Idee?
 
Soweit ich weiß ist der Owner ja nur, in welchen Componenten das JDialog zentriert dagestellt wird. null sollte es in der Mitte des Bildschirmes dagestellt werden, was im Sinne eines SplashScreens sein sollte. Sollte aber eine NullPointerException gethrowt werden, kannst du das auch per leeren super, setLocationRelativeTo() und den 2. Parameter mit setModal() erledigen.

Ohne Listener wirst du nicht weit kommen, irgendwie musst du ja auf die Aktion reagieren.
Du könntest z. B. im Controller einen Thread starten, in im etwas wie TimeUnit.DAYS.sleep(1L) schreiben und beim schließen per WindowListener interrupten. Mit join() wartest du, bis der Thread terminiert wurde. Allerdings wird in jedem Fall der Zeichenthread pausiert, du müsstest also auf jeden Fall einen zusätzlichen Thread starten und warten lassen. Ich würde den Controller in so etwas wie "Start" umbennen, und den Controller im einen WindowListener intialisieren.

Aber ein SplashScreen ist ja eigendlich als Ladebildschirm gedacht. Es wäre ehrlich gesagt meiner Meinung nach komisch wenn ein SplashScreen über einen Button oder eine Titelleiste (beides für einen Listener gebraucht) verfügen würde.
 
Moin,

ich denke auch, dass ein Splash Screen nur eine Art grafischer Platzhalter ist, d. h. lediglich eine Grafik, die während des Ladevorgang eines Programmes (kurz) angezeigt wird .....
Vgl.: http://de.wikipedia.org/wiki/Splash_Screen

Andernfalls wirst Du wohl einen Frame mit Deinen Eingabefeldern basteln müssen, der der Grafik Deines Spash Screens sehr nahe kommt!

Gruß
Klaus
 
Zurück