# Methoden aus anderen Klassen aufrufen



## Hawk2005 (16. Jul 2004)

Hallo,

ich hab nen kleines Programm geschrieben das einen einfach timer darstellt.

Nun möchte ich das Applet GUI von der Funktion trennen. Ich kriegs aber leider nicht hin.

Beispiel:

Das Applet hat eine JProgressBar die von dem Timer (nehmen wir als Beipiel einfach eine for-Scheife) gesteuert
wird. Jetzt will ich die Methode Timer() in eine eigne Klasse Timer packen und im Applet dann nur noch mit new Timer();
aufrufen. Ich versteh dann aber nicht wie ich eine Methode (changeProgrssValue(int wert)) von der Kalsse Timer aus in der Klasse (Applet) aufrufem, die ja mein Objekt Timer erstellt hat.

Ich hoffe mein durcheinander is klar geworden.

Gibt es sowas wie einen caller ?

Das gleiche Problem habe ich ja wenn ein Applet zum Beipiel ein neues Objekt aus einer anderen Klasse erstellt (Frame mit PorgressBar) und die soll dann von einem weiteren Objekt (Timer)  gesteuert werden.

HILFE.......

cu,
 Frank


----------



## bygones (16. Jul 2004)

Hawk2005 hat gesagt.:
			
		

> Ich versteh dann aber nicht wie ich eine Methode (changeProgrssValue(int wert)) von der Kalsse Timer aus in der Klasse (Applet) aufrufem, die ja mein Objekt Timer erstellt hat.


wenn das Applet die Instanz erzeugt hat dann speicher sie einfach in eine Variable.... dann kannst du später über diese Variablen die Methoden der Instanz aufrufen:

```
public class Applet {
   private MyTimer timer;
  
    public Applet() {
          timer = new Timer();
    }
   ....

    public void doSomething() {
      timer.eineMethodeInDerTimerKlasse();
    }
}
```
dass das kein Applet ist ist klar, soll aber zeigen wie du methoden aus deiner Timer klasse aufrufen kannst


----------



## Hawk2005 (16. Jul 2004)

Danke für die Antwort.

Das ist klar soweit. 


Das ist aber leider nicht das Problem. 

Nehmen wir an ich habe eine Klasse Timer, die einfach eine Schleife durchläuft.
Ausserdem habe ich eine Klasse Applet und eine Klasse Frame.

Im Applet habe ich einen Button. Wenn ich den drücke, dann wird die Klasse Frame instanziert.
Diese pop ein Fenster auf in der eine Progressbar sitzt.
Dann instaziert Applet die Klasse Timer.

Nun will ich aus Timer aus auf Frame zugreifen. Direkt oder indirekt. Irgendwie muss die Progressbar ja von
dem Timer geupdatet werden.

Also wie kann ich von Timer aus Frame.pg.setValue(35); aufrufen, ohne das ich in der Klasse Timer was von einer
Klasse Frame weiss. D.h. ich möchte in der Klasse Applet eine Methode aufrufen (von Timer aus) die dann wieder 
in Frame eine Methode aufruft. Die Klasse Applet soll im Prinzip nur als "Interface" zwischen beiden Klassen fungieren.


cu,
 Frank


----------



## Isaac (16. Jul 2004)

Quick and Dirty?

Gib bei der instanziierung 'this' mit und in 'this' (Klasse myApplet) erzeugst du 2 getter Methoden.


```
public MyFrame(MyAppelt app)
{
    this.myApplet = app;
}
```



```
public MyFrame getFrame()
public MyTimer getTimer()
```

Im Frame kannst du dann leicht über


```
myApplet.getTimer().dieMetodeDieDuAufrufenWillst()
```

zugreifen.

DAs eigenet sich aber nur für kleine Projekte und ist nicht zur Nachahmung für Grössere gedacht.


----------

