Guten Abend,
mein eigentliches Problem ist, dass ich vorhabe einen Baum zu malen und dann als Bild abzuspeichern. Dieser Baum basiert auf Datensätzen, welche ich aus einer Datenbank hole. Diese repräsentieren einen Stammbaum und können somit beliebig weit nach unten gehen.
Meine ersten Ideen in der Richtung sind leider fehlgeschlagen, weswegen ich jetzt eine Unterklasse von JPanel geschrieben habe, welche mir das ganze erledigt. Später wird das ganze von einer Hilfsklasse gespeichert. In der Theorie funktioniert das ganze auch ...
Nun zu der Frage bzw. dem Problem:
Ich habe versucht paintComponent zu schreiben um dort den Wurzelknoten des Baumes zu malen. Danach dachte ich mir, könne ich das ganze einfach rekursiv machen um keinen Knoten zu vergessen.
Folgenden Quellcode habe ich bis jetzt:
Wenn ich mir die Ausgaben meiner System.out.println's ansehe, bekomme ich 2x die gleichen Ergebnisse. Kann es sein, dass ich entweder einen Denkfehler mache oder, dass man bei paintComponent nicht rekursiv arbeiten kann? Oder woran hängt es ... ich steige nicht mehr sonderlich durch ^^
Das ganze Iterativ zu lösen erschien mir um weiten schwerer, da ich die ganzen Abbiegungen im Baum dann nicht hinbekommen würde bzw. ich keinen Weg kenne dies hinzubekommen.
Ich hoffe es hat jemand einen Tipp für mich bzw. kann mir erstmal verraten, ob paintComponent überhaupt Rekursiv geht ...
Vielen Dank im Voraus
Gruß,
mein eigentliches Problem ist, dass ich vorhabe einen Baum zu malen und dann als Bild abzuspeichern. Dieser Baum basiert auf Datensätzen, welche ich aus einer Datenbank hole. Diese repräsentieren einen Stammbaum und können somit beliebig weit nach unten gehen.
Meine ersten Ideen in der Richtung sind leider fehlgeschlagen, weswegen ich jetzt eine Unterklasse von JPanel geschrieben habe, welche mir das ganze erledigt. Später wird das ganze von einer Hilfsklasse gespeichert. In der Theorie funktioniert das ganze auch ...
Nun zu der Frage bzw. dem Problem:
Ich habe versucht paintComponent zu schreiben um dort den Wurzelknoten des Baumes zu malen. Danach dachte ich mir, könne ich das ganze einfach rekursiv machen um keinen Knoten zu vergessen.
Folgenden Quellcode habe ich bis jetzt:
Java:
@Override
protected void paintComponent(final Graphics g) {
super.paintComponent(g);
Dimension size = getSize();
g.drawRect(size.width/2-breiteKasten/2, 10, breiteKasten, hoeheKasten);
drawLeft(g, size.height, size.width/2, root.getVater(), 1);
}
private void drawLeft(Graphics g, int hoehe, int weite, Person vater, int ebene) {
int x = (weite/2)-(breiteKasten/2);
int y = hoeheKasten*ebene+25;
System.out.println("Weite: " + weite + " Hoehe: " + hoehe + " Ebene: " + ebene);
System.out.println("Links oben: " + x + " / " + y);
g.drawRect((weite/2)-(breiteKasten/2), hoeheKasten*ebene+25, breiteKasten, hoeheKasten);
if(vater.getVater() != null) {
drawLeft(g, hoehe, weite/2, vater.getVater(), ebene+1);
}
}
Wenn ich mir die Ausgaben meiner System.out.println's ansehe, bekomme ich 2x die gleichen Ergebnisse. Kann es sein, dass ich entweder einen Denkfehler mache oder, dass man bei paintComponent nicht rekursiv arbeiten kann? Oder woran hängt es ... ich steige nicht mehr sonderlich durch ^^
Das ganze Iterativ zu lösen erschien mir um weiten schwerer, da ich die ganzen Abbiegungen im Baum dann nicht hinbekommen würde bzw. ich keinen Weg kenne dies hinzubekommen.
Ich hoffe es hat jemand einen Tipp für mich bzw. kann mir erstmal verraten, ob paintComponent überhaupt Rekursiv geht ...
Vielen Dank im Voraus
Gruß,