Warum wird meine GUI nicht gezeichnet ?

Hallo, ihr Meister des Java,

Ich habe ein Applet geschrieben, das aus eine Animation und einem dazu gehörigen GUI besteht (Beispiel : http://www.kanitrino.de/PageDE/Rempelei.html).

Irgendwas stimmt nicht, denn manchmal wird die GUI garnicht oder nur unvollständig gezeichnet. Manchmal tauchen noch einzelne Buttons auf, wenn ich auf der leeren Fläche rumklicke.

Also, im Einzelnen :
Ich schaffe in der init()-Methode des Applets erst mal einen Container

Container container = getContentPane();
container.setLayout(null);
container.setBackground(new Color(200, 200, 140));

in diesen binde ich die eigentliche Animation ein, ein Objekt „welt“ einer JPanel-Klasse
welt.setLocation(0, 0);
welt.setSize(breite, hoehe);
container.add(welt);

und danach alle Komponenten in gleicher Weise,
z. B. den Startbutton
bStart.setSize(90, 40);
bStart.setLocation(breite+70, 500);
bStart.setFont(font2);
bStart.setBackground(Color.green);
container.add(bStart);

einen Slider slider1.setLocation(breite+20, 280);
slider1.setBackground(new Color(200, 200, 140));
slider1.setSize(200, 40);
container.add(slider1);

und am Schluss container.setVisible(true);

Damit müsste doch eigentlich alles Klar sein, oder ? Der setVisible()-Befehl sollte doch unabhängig von einem repaint() oder so sein.

Warum wird der Container dann nicht (mit Ausnahme einer Checkbox)- und manchmal doch - gezeichnet ? Habe ich irgendwo eine falsche Vorstellung ?

Wer kann mir helfen ?

Euer verzweifelter
Klaus

Hallo Klaus.

so liest man sich wieder :wink:

Ich habe ein Applet geschrieben, das aus eine Animation und
einem dazu gehörigen GUI besteht (Beispiel :
http://www.kanitrino.de/PageDE/Rempelei.html).

Irgendwas stimmt nicht, denn manchmal wird die GUI garnicht
oder nur unvollständig gezeichnet. Manchmal tauchen noch
einzelne Buttons auf, wenn ich auf der leeren Fläche
rumklicke.

Ich habe Dein Applet mal mit dem AppletViewer laufen lassen.
Was dort auffällt ist, dass es beim ersten Start problemlos
klappt, dass das Neustarten und das Neuladen aber Probleme bereiten.

Ohne den Quellcode kann ich nur spekulieren, dass Du
nicht auf das Neuladen des Applets reagierst und
es sich ab dann in einem undefinierten Zustand befindet.

Die Lebenszyklusphasen eines Applets , d.h. die zu implementierenden
Methoden sind:

(1) init()
(2) start()
(3) stop()
(4) destroy()

Siehe z.B.
http://java.sun.com/j2se/1.5.0/docs/api/java/applet/…
http://www.uni-bayreuth.de/departments/math/~rbaier/…

Das lokale Testen mit dem AppletViewer, der die Funktionen
„Neu starten“ und „Neu laden“ als Menüfunktionen anbietet,
funktioniert mit dem Aufruf:

appletviewer -J"-Djava.security.policy=maennchen.policy" http://www.kanitrino.de/PageDE/Rempelei.html

und der Datei maennchen.policy:

grant {
 permission java.security.AllPermission;
};

Gruß,
-Andreas.