Slyh: mögt ihr noch eins?

Beitrag lesen

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