JFrame erst nach dem Laden sichtbar stellen

xyss

Aktives Mitglied
Hallo,

Bei meinem Projekt werden im Voraus einige JPanel geladen, und ein paar davon benötigen ein wenig Zeit. Das was mich dabei nun stört ist, dass aus diesem Grund für etwa eine halbe Sekunde beim Start des Programms ein leeres JFrame zu sehen ist, da das Panel noch nicht "bereit" ist. Ich habe es daher einfach versucht, setVisible(true) erst aufzurufen, nachdem ich die Panel erstellt und hinzugefügt habe. Jedoch bewirkt das gleichzeitig auch, dass das Programm im Hintergrund startet...wieso?
 
Damit meine ich, dass ich das Programm lediglich in der Taskleiste sehe, bzw mein Eclipse noch im Vordergrund ist, und ich in der Taskleiste erst auf die Applikation klicken muss.
 
Jup, ändert auch nichts.

Edit:

Hier der Aufbau:

Java:
public GameFrame(){
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setFocusable(false);
		setTitle("Sidescroller");
		setResizable(false);
        setUndecorated(true);   

        GraphicsDevice graphicsDevice = getGraphicsConfiguration().getDevice();
        graphicsDevice.setFullScreenWindow(this);

		setLocationRelativeTo(null);
		setVisible(false);
		createBufferStrategy(2);
	}

in dem Hauptprogramm dann:
Java:
f = new GameFrame();
//....
//....
f.add(...); //adde die panel
f.pack();
	   f.setVisible(true);
	   f.setAlwaysOnTop(true);
 
Zuletzt bearbeitet:
Wieso setzt du auf das leere Frame nicht einen "Wartepanel" solange die anderen Aktionen nicht beendet worden sind? Ladebalken oder sonstiges? Macht es doch schöner.
 
Mach einen schönen Dialog und warte dort auf Rücksprache der anderen Threads, die die Daten holen. Eventuell undecorated JDialog mit einem Label und einem geeigneten Hintergrundbild.

Geht sicherlich auch anders! 😉
 
Danke für diese schöne Idee! Für eine halbe Sekunde Ladezeit lohnt es sich zwar noch nicht, aber das wird sicherlich mit der Zeit noch länger 😛

Würde trotzdem gerne wissen, woran das liegt, dass sich das Programm im Hintergrund, bzw minimiert öffnet, wenn ich setVisible erst nach dem Laden der Panels, Daten, etc. aktiviere.
Und wie gesagt, setAlwaysOnTop, toFront haben keine Wirkung gezeigt, jedenfalls nicht so wirklich... von etwa 20 Versuchen ist es 2 Mal "korrekt" gestartet. Liegt es vielleicht daran, dass das Frame zwischendurch den Focus verliert?
 
Zuletzt bearbeitet:

Zurück
Oben