# Java 2D - dynamisch zeichnen



## jroxtheworld (11. Jul 2010)

Mal ne kurze Frage hier, mir fehlt gerade der Durchblick mit dieser Graphicsgeschichte.
Ich habe eine Klasse EmptyPanel (extends javax.swing.JPanel) und eine andere Klasse MyTest, in der ich ein Objekt von EmptyPanel erstelle. Nun möchte ich beim Aufruf der Methode generateCircles() dynamisch randommässig n Circles generieren und diese auf meinem EmptyPanel anzeigen lassen. Nur wie bloss?! In der MyTest Klasse habe ich ja keinen Zugriff auf das Graphics Objekt aus EmptyPanel und getGraphics() ist ja nicht dazu gedacht. Vielleicht kann mir hier wer weiterhelfen?


----------



## headset (11. Jul 2010)

du kannst aus deiner MyTest Klasse, eine Methode aus der anderen Klasse öffnen, oder eine Methode starten, die in der MyTest Klasse die Methode startet und das Grafikobjekt mitgibt.


----------



## Luk10 (11. Jul 2010)

kleines Beispiel:


```
public class EmptyPanel extends JPanel{
//[...]
MyTest test;
  public EmptyPanel (MyTest test) {
     this.test = test;
//Überschriebene Methode zum Zeichnen
@Override
  public void paintComponent (Graphics g) {
  test.drawCircels(g);
  }
}
```


```
public class MyTest {
  Emptypanel panel
  public static void main (String[] args) {
     new MyTest().go();
  public void go() {
    panel = new EmptyPanel(this);
    //Eine Schleife zum aufrufen von repaint und deine Zufallsmethode
   }
  public void drawCircels (Graphics g) {
    //Deine Kreise zeichnen (s.h. API)
    }
}
```

So in etwas sollte das machbar sein

Luk10


----------



## jroxtheworld (11. Jul 2010)

Super dankeschön!
Jetzt muss ich noch einmal präzisieren. In Wirklichkeit gibt es verschiedene Klassen MyTest1, MyTest2 usw., die jeweils ein EmptyPanel Objekt haben. Und jede dieser Klassen will vielleicht was anderes auf dem EmptyPanel zeichnen. Wie mache ich, dass das EmptyPanel nicht fix nur mit MyTest1 funktioniert? Ich möchte eigentlich keine Logik im EmptyPanel haben.

Danke nochmals


----------



## Luk10 (11. Jul 2010)

Mach eine Superklasse von MyTest und verwende Polymorphie.

Dann musst du in EmptyPanel nicht 2 Referenzen auf 2 Klassen haben.
Der Rest sollte sich aus meinem Code ergeben.

Luk10


----------

