Hi all,
Habe hier ein Problem, bei dem ich gar nicht weiterkomme. Sitze schon den ganzen Abend dran und habe alles mögliche ausprobiert, aber jetzt bin ich mit meinem Latein am Ende.
Es geht darum, dass ich innerhalb des laufenden Programms einen "Splash-Screen" anzeigen will (mit einem Bild), der so lange sichtbar sein soll, wie das Laden der Daten dauert. Genauer gesagt befindet sich am Anfang des Programms ein Dialog, der nach einem Login fragt, da soll der User was eingeben und nach Bestätigung der Eingabe werden dann verschiedene Daten geladen, was teilweise einige Sekunden braucht. Während dieser Sekunden soll ein solcher Ladebildschirm angezeigt werden. Nachdem alles geladen ist, soll er dann wieder verschwinden.
Nur leider funzt es nicht. Ich habe JDialog, JWindow, JFrame und JweißderGeierwasnochalles ausprobiert -> nichts. Wenn ich setVisible auf true setze, bevor dieser Start-Login-Dialog kommt, dann zeigt er den Ladebildschirm ganz normal an, samt Bild (ist halt der falsche Zeitpunkt). Wenn ich setVisible erst nach dem Login-Dialog auf true setze, dann erscheint bestenfalls ein durchsichtiges Fenster ohne das Bild. Ich verstehe einfach nicht, warum er das nicht anzeigen will. Ich hatte auch die Vermutung, dass er vielleicht das Bild noch nicht geladen hat und sich dann nicht mehr damit beschäftigen will beim Daten-Laden, aber auch da kein Erfolg: Ich habe ImageIO, Toolkit, Label-ImageIcon, MediaTracker, BufferedImage usw. probiert, aber daran liegt es wohl nicht, denn davon hat nichts geholfen. Auch wenn ich nur ein Label mit einem Text hinzufüge, wird der Ladebirdschirm nicht angezeigt. Das einzige, was man sieht (vorausgesetzt Decorations sind an), ist die Titelleiste - und eben das durchsichtige ContentPane.
Weiß jemand, an was das liegt?
Ich habe mir auch überlegt, ob es vielleicht schlau wäre, das mit Threads hinzubiegen, aber da hab ich keine Ahnung, wie ich das bewerkstelligen soll. Bei Google finden sich manche Hinweise auf SwingWorker, aber ich blicke da nicht wirklich durch. Auch eine Suche hier hat mich dahingehend nicht weitergebracht. Vielleicht ist es auch ganz der falsche Pfad.
Ich wär echt glücklich, wenn mir jemand meinen Denkfehler aufzeigt. Irgendwie kommt es mir so vor, als würde ich was übersehen. Es macht mich auf jeden Fall wahnsinnig
Danke schon mal für die Antworten.
Habe hier ein Problem, bei dem ich gar nicht weiterkomme. Sitze schon den ganzen Abend dran und habe alles mögliche ausprobiert, aber jetzt bin ich mit meinem Latein am Ende.
Es geht darum, dass ich innerhalb des laufenden Programms einen "Splash-Screen" anzeigen will (mit einem Bild), der so lange sichtbar sein soll, wie das Laden der Daten dauert. Genauer gesagt befindet sich am Anfang des Programms ein Dialog, der nach einem Login fragt, da soll der User was eingeben und nach Bestätigung der Eingabe werden dann verschiedene Daten geladen, was teilweise einige Sekunden braucht. Während dieser Sekunden soll ein solcher Ladebildschirm angezeigt werden. Nachdem alles geladen ist, soll er dann wieder verschwinden.
Nur leider funzt es nicht. Ich habe JDialog, JWindow, JFrame und JweißderGeierwasnochalles ausprobiert -> nichts. Wenn ich setVisible auf true setze, bevor dieser Start-Login-Dialog kommt, dann zeigt er den Ladebildschirm ganz normal an, samt Bild (ist halt der falsche Zeitpunkt). Wenn ich setVisible erst nach dem Login-Dialog auf true setze, dann erscheint bestenfalls ein durchsichtiges Fenster ohne das Bild. Ich verstehe einfach nicht, warum er das nicht anzeigen will. Ich hatte auch die Vermutung, dass er vielleicht das Bild noch nicht geladen hat und sich dann nicht mehr damit beschäftigen will beim Daten-Laden, aber auch da kein Erfolg: Ich habe ImageIO, Toolkit, Label-ImageIcon, MediaTracker, BufferedImage usw. probiert, aber daran liegt es wohl nicht, denn davon hat nichts geholfen. Auch wenn ich nur ein Label mit einem Text hinzufüge, wird der Ladebirdschirm nicht angezeigt. Das einzige, was man sieht (vorausgesetzt Decorations sind an), ist die Titelleiste - und eben das durchsichtige ContentPane.
Weiß jemand, an was das liegt?
Ich habe mir auch überlegt, ob es vielleicht schlau wäre, das mit Threads hinzubiegen, aber da hab ich keine Ahnung, wie ich das bewerkstelligen soll. Bei Google finden sich manche Hinweise auf SwingWorker, aber ich blicke da nicht wirklich durch. Auch eine Suche hier hat mich dahingehend nicht weitergebracht. Vielleicht ist es auch ganz der falsche Pfad.
Ich wär echt glücklich, wenn mir jemand meinen Denkfehler aufzeigt. Irgendwie kommt es mir so vor, als würde ich was übersehen. Es macht mich auf jeden Fall wahnsinnig
Danke schon mal für die Antworten.