Hallo zusammen,
ich möchte als Übung des Kompositums-Musters einen Baum mit Grafik programmieren. Dazu habe ich folgende Datenstruktur angelegt:
Das Ganze ist erstmal nur ein Entwurf. Ich bitte daher eventuelle Tippfehler, nicht aber Logikfehler zu übersehen.
Jetzt würde ich den Baum aber nicht so gern nur mit System.out rausschreiben, sondern hätte gerne eine grafische Darstellung. So dass die Funktione inhaltGeben() irgendwie so aussieht:
Meine Fragen: Kennt jemand einen Sourcecode, der das so umsetzt? Ist meine Idee richtig? Gibt es eine einfacher Möglichkeit einen Rechteck mit Text oder Kreis mit Text zu programmieren? Gibt es vielleicht irgendwo eine Bibliothek mit deren Hilfe so etwas einfacher zeichnen kann?
Vielen Dank für eventuelle Tipps,
Ingo
ich möchte als Übung des Kompositums-Musters einen Baum mit Grafik programmieren. Dazu habe ich folgende Datenstruktur angelegt:
Java:
abstract class Baumelement {
public abstract Baumelement linksGeben();
public abstract Baumelement rechtsGeben();
public abstract void inhaltGeben();
}
class Knoten extends Baumelement {
private Baumelement links, rechts;
private String inhalt; //Wird später auf ein allgemeines Datenelement erweitert.
public Baumelement linksGeben() {return links;}
public Baumelement rechtsGeben() {return rechts;}
public void inhaltGeben() {System.out.print(inhalt);}
}
class Abschluss extends Baumelement {
public Baumelement linksGeben() {return null;}
public Baumelement rechtsGeben() {return null;}
public void inhaltGeben() {System.out.print("");}
}
Das Ganze ist erstmal nur ein Entwurf. Ich bitte daher eventuelle Tippfehler, nicht aber Logikfehler zu übersehen.
Jetzt würde ich den Baum aber nicht so gern nur mit System.out rausschreiben, sondern hätte gerne eine grafische Darstellung. So dass die Funktione inhaltGeben() irgendwie so aussieht:
Java:
public void inhaltGeben(Graphics2D g, int vaterX, int vaterY) {
//Rechteck mit Inhalt
//Es fehlt noch die Berechnung der aktuellen Position
Rectancle r = new Rectangle(0, 0, 10, 10);
g.draw(new Rectangle(0, 0, 10, 10));
g.drawString(inhalt, r.x + 3, r.y + 2);
//Linie vom Vater nach hier.
g.drawLine(vaterX, vaterY, r.x + r.width/2, r.y);
}
Meine Fragen: Kennt jemand einen Sourcecode, der das so umsetzt? Ist meine Idee richtig? Gibt es eine einfacher Möglichkeit einen Rechteck mit Text oder Kreis mit Text zu programmieren? Gibt es vielleicht irgendwo eine Bibliothek mit deren Hilfe so etwas einfacher zeichnen kann?
Vielen Dank für eventuelle Tipps,
Ingo