In einem Applet zeichnen wenn es mehrere Threads gibt...



  • ...ich stehe vor dem Problem, dass ich ein kleines Spiel machen möchte. Wie im Topic bereits steht handelt es sich um ein Applet. Bis jetzt sieht mein Gerüst so aus, dass die Applet-Klasse nur die Benutzereingaben entgegen nimmt und weiterreicht an den zweiten Thread (funktioniert einwandfrei). Diesen erzeuge ich beim ersten Aufruf von Paint und übergebe ihm in seinem Konstruktor das Graphics Objekt.
    Dieses kann ich im Konstruktor zum zeichnen ohne Probleme verwenden, jedoch nicht in der run()-Methode des Threads.

    Und nun die große Frage: woran liegt das?

    danke im voraus



  • Das liegt daran, das der Kopf der run() methode unparametisiert ist und du diese Methode überschreiben musst, da diese methode von start() aufgerufen wird die run() methode ist (meine ich) im Interface Runnable so definiert worden. Soll heißen, wenn du eine methode run(Type param) schreibst, wird diese zwar überladen, jedoch nicht überschrieben, da die Köpfe der methoden unterschiedlich sind.

    MFG John

    PS:
    Eine workaround könnte so aussehen:

    Threadclass extends Thread{
       private Type param;
       public void startThread(Type param){
          this.param = param;
          this.start(); //oder nur start()
       }
       public void run(){
          doSomething(param); //oder wie auch immer zu verwenden
       }
    }
    

    EDIT:
    Ooops habe dein Problem wohl falsch verstanden ...
    probiere es trotzdem mal mit

    Threadclass extends Thread{
       Type param;
       public Threadclass(Type param){
          this.param = param;
       }
    }
    

    So sollte die Variable Klassenweit bekannt sein.

    MFG John


Anmelden zum Antworten