Hallo Christoph,
Dafür ist es rätselhaft und absolut zufallsbedingt, ob das Applet überhaupt "arbeiten" und etwas anzeigen möchte. Unter Umständen muß man mehrfach "aktualisieren", bis die Grafik-Ausgabe des Applets überhaupt angezeigt wird, und das ist hier das Problem. Natürlich möchte ich, daß ein Applet auch brav seine Arbeit verrichtet, sobald die Seite, in der es enthalten ist, aufgerufen wird.
Ich kann dein Problem nicht reproduzieren. Getestet habe ich mit Netscape
Navigator 4.79 und JDK 1.3.1 sowie mit Mozilla 1.1b und JDK 1.4.01. Beide
Applets werden sofort korrekt angezeigt.
Es sind mir jedoch einige Dinge an deinem Code aufgefallen, die sicherlich
noch verbessert werden können:
- Auf der Konsole wird beim ersten Anzeigen des Applets eine NullPointerException
angezeigt. Das kommt daher, daß du "img" erst in der Methode "update()" einen
Wert zuweist. Beim ersten Anzeigen des Applets wird aber (allem Anschein
nach) nur die "paint()"-Methode aufgerufen. Erst durch den repaint()-Aufruf
in "run()" wird "img" gesetzt. - Du startest den Thread schon in der init()-Methode. Sowas sollte eigentlich
in "start()" erfolgen. In init() sollte das Applet initialisiert werden, also
z.B. Objekte erzeugt oder Vorberechnungen durchgeführt werden. Start() wird
evtl. sehr viel später ausgeführt, nämlich erst dann, wenn das Applet auch
wirklich loslaufen soll. - Du schreibst Klassennamen klein, dafür aber manche Instanzvariablen groß.
In diesem Fall erzeugst du dir z.B. ein Objekt der Klasse "Thread" und nennst
dieses Objekt auch "Thread". Mich wundert es, daß der Compiler soetwas
überhaupt mitmacht. :-) Ein menschlicher Leser wird damit noch viel weniger
Freude haben. Ich empfehle dir die Lektüre der Code Conventions for the Java
Programming Language (http://java.sun.com/docs/codeconv/). Dort sind einfache
Regeln zur Code-Gestaltung festgehalten, die das Lesen des Codes sehr
erleichtern. Die meisten Java-Programmierer (die ich kenne) halten sich mehr
oder weniger vollständig an diese Regeln. Das solltest du auch. Du wirst es
dir beim späteren Lesen des Codes selbst danken.
Gruß
Slyh