Hallo!
ich habe in der Uni die Aufgabe bekommen, einen Pythagorasbaum mit einem JApplet zu erstellen:
Wie ich den Baum nun genau mache, dass will und werd ich schon alleine rausfinden.
Mein Problem ist, das ich gar nicht genau weiß, wie so ein JApplet jetzt funktioniert.
Ich habe das jetzt so verstanden, dass die init() Funktion, im Sinne der Main Klasse die Einstiegsklasse ist, die bei dem Aufrufen im Browser einmal ausgeführt wird.
Da der Baum ja rekursiv durchlaufen soll, dachte ich mir, dass ich in der init()-Methode einfach paint mit den Anfangsparametern aufrufe, dass sich dann wiederrum mit repaint() rekursiv mit neuen Parametern bis zur Abbruchbedingung aufruft. Jetzt lese ich, dass man paint() eigentlich nicht überschreiben sollte....
Wer übergibt paint() denn eigentlich das Graphics-Object? Wo wird die Methode aufgerufen?
Ich will eigentlich nur eine Methode mit gewissen Parametern aufrufen, die dann rekursiv meinen Baum zeichnet...
ich habe in der Uni die Aufgabe bekommen, einen Pythagorasbaum mit einem JApplet zu erstellen:

Wie ich den Baum nun genau mache, dass will und werd ich schon alleine rausfinden.
Mein Problem ist, das ich gar nicht genau weiß, wie so ein JApplet jetzt funktioniert.
Ich habe das jetzt so verstanden, dass die init() Funktion, im Sinne der Main Klasse die Einstiegsklasse ist, die bei dem Aufrufen im Browser einmal ausgeführt wird.
Da der Baum ja rekursiv durchlaufen soll, dachte ich mir, dass ich in der init()-Methode einfach paint mit den Anfangsparametern aufrufe, dass sich dann wiederrum mit repaint() rekursiv mit neuen Parametern bis zur Abbruchbedingung aufruft. Jetzt lese ich, dass man paint() eigentlich nicht überschreiben sollte....
Wer übergibt paint() denn eigentlich das Graphics-Object? Wo wird die Methode aufgerufen?
Ich will eigentlich nur eine Methode mit gewissen Parametern aufrufen, die dann rekursiv meinen Baum zeichnet...
Code:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import javax.swing.JApplet;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Max
*/
public class Pythagoras extends JApplet {
int tiefe = 7;
int count = 0;
double faktor = 1;
double wL;
double wR;
Point a = new Point(100, 100);
Point b;
Point c;
Point d;
Point e;
Graphics g;
@Override
public void init() {
paint(g, faktor, a);
}
public void paint(Graphics g, double faktor, Point a) {
setSize(400, 400);
int w = getWidth();
int h = getHeight();
// g.clearRect(0, 0, w, h);
this.a.setLocation(a.getX(), a.getY());
b.setLocation(a.getX()+(100*faktor), a.getY());
c.setLocation(b.getX(), b.getY()-(100*faktor));
d.setLocation(c.getX()-(100*faktor), c.getY());
e.setLocation(d.getX()+(50*faktor), d.getY()-(50*faktor));
g.drawLine((int)a.getX(), (int)a.getY(), (int)b.getX(), (int)b.getY());
g.drawLine((int)b.getX(), (int)b.getY(), (int)c.getX(), (int)c.getY());
g.drawLine((int)c.getX(), (int)c.getY(), (int)d.getX(), (int)d.getY());
g.drawLine((int)d.getX(), (int)d.getY(), (int)a.getX(), (int)a.getY());
g.drawLine((int)d.getX(), (int)d.getY(), (int)e.getX(), (int)e.getY());
g.drawLine((int)c.getX(), (int)c.getY(), (int)e.getX(), (int)e.getY());
// int abstand = (int)Math.sqrt(Math.pow((b.getX()-a.getX()),2) + Math.pow((b.getY()-a.getY()),2));
count++;
if(count <= tiefe) {
repaint(g, faktor, d);
}
}
public void repaint(Graphics g, double faktor, Point a) {
paint(g, faktor, a);
}
}