# Paint() Methode aus einer anderen Klasse aufrufen



## DaBua07 (15. Jan 2009)

Hallo

Kämpfe jetzt schon seit Stunden mit ein und dem selben Problem kann aber keine Lösung finden.
Hoffentlich kann mir jemand von euch weiterhelfen

Also zum Problem

Ich habe eine Klasse("AppletTest") die von JApplet erbt und über die Methode paint() verfügt in jener irgendwas gezeichnet wird.
In einer anderen Klasse("PaintAuswirkung1") ändere ich dann etwas das eine Auswirkung auf das gezeignete hat also will ich die Paint-Methode von "AppletTest" neu ausführen und das direkt aus der Klasse "PaintAuswirkung1". Also wie lässt sich das bewerkstelligen????

also AppletTest.repaint() funkt ned.

Wäre toll wenn mir da jemand weiterhelfen könnte.

Danke

Mfg 
DaBUA


----------



## hdi (15. Jan 2009)

Du machst dir im Applet eine Instanz von PaintAuswirkung 1 und fügst das einfach in deine paint-Methode ein


```
//im Applet

PaintAuswirkung1 specialPaint = new PaintAuswirkung1();

public void paint(Graphics g){
     // paint some stuff
     specialPaint.paint(g);
}
```

Kann natürlich auch eine statische Methode sein dann brauchst du keine Instanz.

Vllt verstehe ich dich auch falsch  :?:


----------



## DaBua07 (15. Jan 2009)

Also ich glaub da meinen wir nicht dasselbe.

also die klasse PaintAuswirkung ist ein Thread und in der run() Methode soll eigentlich repaint() ausgeführt werden also um die paint() Methode der vorhergenden Klasse (Applettest) auszuführen:


```
:
  public class Applettest extends JApplet{

      public void init(){
          //Irgendwelche Befehle
          PaintAuswirkung auswirkung1 = new PaintAuswirkung();
          auswirkung.run();
       }

      public void paint(Graphics g){
           
             super.paint(g);
             g.fillrect(x,y,a,b);
      }


  }
  
   class PaintAuswirkung extends Thread{

         public void run(){
              
              x=x+1;
              y=y+3;
              repaint(); //ja und das funkt eben nicht gibt es da irgendeinen besonderen Befehl den ich da brauch?
             //oder
              Applettest.repaint(); //funkt auch ned
         }
   }
```
Also so sieht mein Programm zwar nicht aus, ist nur zur Veranschaulichung meines Problems


----------



## Ebenius (15. Jan 2009)

Die Methode repaint() gibt's natürlich in der Thread-Klasse nicht. Applettest ist eine Klasse, die Methode repaint() ist aber nicht statisch und muss damit über eine Instanz der Klasse Applettest referenziert werden.

Verschieb doch mal die Klasse PaintAuswirkung in die Klasse Applettest (als Inner Class). Dann geht repaint() bestimmt. 

Und dann solltest Du nochmal ein Büchlein zur Hand nehmen für die Java-Grundlagen.

Viel Spaß. Ebenius


----------



## Gast (15. Jan 2009)

Hallo,

also ich würde sagen, dass der erste repaint() aufruf versucht etwas in der 2. Klasse zu malen und der  zweite aufruf ist denke ich auch falsch da du klasse.methode verwendest und nicht objekt.methode. repaint ist ja keine statische methode.

mfg


----------



## Guest (15. Jan 2009)

Hallo Ebenius

Danke für deine Antwort hab sowas ähnliches schon befürchtet, also das ich paint()  nicht aus einer anderen Klasse ausführen kann. 
Hab aber nicht gewusst das es innere Klassen gibt. 
Also brauch ich die 2.Klasse einfach nur in die erste verschieben?
Oder muss ich da auf irgendwas achten bei der Klassendeklaration?

Ja des mitn Grundbuch ist glaub ich eine gute idee, arbeite erst seit einem halben Jahr mit Java und hab mir da glaub ich für einen Anfänger ein bisschen zu viel zugemutet


----------



## Ebenius (15. Jan 2009)

In dem Fall musst Du nichts weiter beachten. Und vor dem nächsten Problem wirst Du dann ein Buch gelesen haben. 

Schon ein halbes Jahr? Dann lies mal schnell ein Buch, dann verbätst Du nicht so viel Zeit mit Dingen die Du ohne Lesen nicht verstehst. Such mal hier im Forum, da gibt's einige Buch-Empfehlungen; auch online.

Ebenius


----------

