Fensterinhalt erscheint erst, wenn das Fenster verändert wird

robochris

Aktives Mitglied
Hallo Zusammen,

im Anhang habe ich ein kleines Testprogram mit der Klasse JFrame geschrieben. Der Inhalt erscheint erst, wenn ich den Rand des Fenster mit der Maus ziehe oder sonst irgendwie die Fenstergröße verändere. Woran kann denn das liegen?

Für eure Hilfe bin ich dankbar.
 

Anhänge

Hallo Zusammen,

im Anhang habe ich ein kleines Testprogram mit der Klasse JFrame geschrieben. Der Inhalt erscheint erst, wenn ich den Rand des Fenster mit der Maus ziehe oder sonst irgendwie die Fenstergröße verändere. Woran kann denn das liegen?

Für eure Hilfe bin ich dankbar.

Der dazugehörige Quelltext würde mehr helfen. ;-)
 
Hier ist der source

Das Programm ist mein Versuch, mit der Maus kopier- und verschiebbare Objekte zu erzeugen. Dabei herausgekommen ist eine Art "Mal/Soundprogramm" für Kinder ( vielleicht so mit 4 Jahren )

Ich denke, dass der Grund die for-Schleife im Konstruktor der MainView-Klasse ist.
Diese würde ich in einen eigenen Thread auslagern, womit das Problem schon behoben sein könnte.
Wäre es nicht sinnvoll, bei der Gelegenheit eine "Endlosschleife", die über ein Flag beendet wird,
daraus zu machen?

Ansonsten eine coole Idee, die den Kleinen sicher Spass machen könnte. 🙂
 
Ich denke, dass der Grund die for-Schleife im Konstruktor der MainView-Klasse ist.
Hmm, ich könnte das mal probieren. Das Problem ist aber auch schon vor dem Einfügen der For-Schleife aufgetaucht.

Diese würde ich in einen eigenen Thread auslagern, womit das Problem schon behoben sein könnte.
Da hast Du Recht. Die For-Schleife habe ich am Schluss erst an das Programm dran gehängt. Die ist etwas "murksig". Wenn ich an dem Programm weiter bastele, werde ich das ändern.

Ansonsten eine coole Idee, die den Kleinen sicher Spass machen könnte.
Hihi, Danke 🙂

Eigentlich sollte die Tonhöhe der Sounds auch noch von der Höhenposition des Bildes abhängen, aber das gibt die Wav-Play Klasse wohl nicht her.
 
setVisible(true); sollte in der Initialisierung der letzte Befehl sein,
später, aber immer noch nur in ms Abstand Komponenten einzufügen und repaint() aufzurufen ist einerseits vollkommen unnötig,
andererseits vielleicht der Grund für deinen Fehler, nur repaint() mag nicht reichen,

bei Änderung der Komponentenstruktur ist das Layout neuzuberechnen, bei Größenänderung passiert das,
selber evtl. mit validate()/revalidate() zu erreichen + in der Tat repaint() danach

die Schleife wird aktuell letztlich vom main-Thread ausgeführt,
also durchaus schon mehr oder weniger von einem separaten Thread (zum AWT-Thread der GUI)
 

Zurück
Oben