Baum graphisch darstellen

ingobar

Mitglied
Hallo zusammen,

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
 

U2nt

Bekanntes Mitglied
Ich würde es ähnlich machen, würde nurnicht
Code:
g.draw(new Rectangle(...));
sondern
Code:
g.drawRect();
.

Ansonsten brauchst du noch ein
Code:
Frame
bzw.
Code:
JFrame
um auf einem
Code:
JPane
l zu zeichnen.
 

ingobar

Mitglied
Hallo,

so ich habe jetzt ewig versucht das hinzukriegen. Bin aber leider gescheitert.

Das Problem ist irgendwie folgendes: Ich habe die dargestellten Klassenstruktur jetzt noch um eine Klasse TreeCanvas (Singelton) erweitert. Das kann man ansprechen, um ein Rechteck als Knoten zu zeichnen. Aber wo stecke ich die Koordinateninformationen hin? Ich möchte ungern die Koordinaten in die Knoten stecken, da die Position der bereits gezeichneten ja von den weiter untenstehen Knoten abhängt. Immer wenn ein Knoten auf einer neuen Ebene/Level/Tiefe dazukommt, muss den darüberliegenden ja gesagt werden, dass sie auseinander rücken müssen. Oder ich muss vorher die Tiefe das Baumes bestimmen, was ich aber nicht möchte. Das würde irgendwie dem Kompositum-Muster doch widersprechen, oder? Ich möchte ja ausgehend vom Wurzel-Knoten den Aufruf des Zeichnes einfach an die Kindsknoten weitergeben. Mmmmmmmhhhhhh, wenn ich so darüber nachdenke.....und wenn ich in den Aufruf einen die aktuellen Tiefe noch weitergebe? Dann weiß ich ja immer noch nicht, wie viele Kindsknoten ein Knoten hat. Und eine Wurzel mit 5 Blättern muss ich ja breiter machen, als eine Wurzel mit 2 Blättern. Darüber weiß aber das einzelne Blatt nichts. Muss vielleicht die Wurzel die Breite der Blätter bestimmen.

Herrje, ich kriegs einfach gedanklich nicht auseinander. Wie kriege ich dieses Kompsitum-Muster und MVC so ineinander, dass das Kompositum wirklich nur die Datenstruktur ohne Zeichnungsinformationen erfasst und ich eine eigene Klasse zum Zeichnen habe. Wo kommt mein Control hin....zu der Zeichenklasse oder eine Klasse.

Das kann doch nicht so schwer sein, aber ich kriegs einfach nicht aufgeteilt.

Jemand einen Tipp?

Vielen Dank,

Ingo
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
G AVL-Baum Java Basics - Anfänger-Themen 1
G Rot-Schwarz-Baum Java Basics - Anfänger-Themen 8
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
CptK Interface Baum visualisieren Java Basics - Anfänger-Themen 37
CptK Best Practice Merge-Sort als Baum darstellen Java Basics - Anfänger-Themen 3
E Baum pfadweise durchlaufen Java Basics - Anfänger-Themen 11
O Naives links rechts einfügen in ADT Baum Java Basics - Anfänger-Themen 8
L Traversierungsverfahren Baum: LevelOrder Java Basics - Anfänger-Themen 17
L Rekursion im Baum Java Basics - Anfänger-Themen 9
L Baum Knoten zählen Java Basics - Anfänger-Themen 6
L B+Baum innere Knoten erstellen Java Basics - Anfänger-Themen 3
D B-Baum einfügen und löschen Java Basics - Anfänger-Themen 2
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
D Werte AVL-Baum löschen Java Basics - Anfänger-Themen 2
M Binären Baum Kinder setzen Java Basics - Anfänger-Themen 12
U 2-3-4 Baum Top-Down Java Basics - Anfänger-Themen 4
U 2-3-4 Baum Top-Down Java Basics - Anfänger-Themen 0
J Überprüfen, ob eine 2D Matrix ein Baum ist Java Basics - Anfänger-Themen 5
R Baum erzeugen Java Basics - Anfänger-Themen 61
B Baum Traversierung Postorder Java Basics - Anfänger-Themen 6
B OOP Über einen AVL-Baum iterieren (NullPointer) Java Basics - Anfänger-Themen 5
A Voller Baum Java Basics - Anfänger-Themen 7
S n-ärer Baum Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
C kompletter baum Java Basics - Anfänger-Themen 2
M Collections Iterator und generischer Baum Java Basics - Anfänger-Themen 0
M Baum Code kurze frage ... Java Basics - Anfänger-Themen 6
D Ein Objekt in einem Baum finden und ausgeben. Java Basics - Anfänger-Themen 4
K Rot-Schwarz-Baum min und max-Tiefe Java Basics - Anfänger-Themen 1
A min() Methode Baum Java Basics - Anfänger-Themen 1
J Baum rekursiv durchlaufen Java Basics - Anfänger-Themen 2
J Baum Knoten löschen Java Basics - Anfänger-Themen 10
T Baum mit Turtle zeichnen Java Basics - Anfänger-Themen 2
Screen 2,4 Baum Frage Java Basics - Anfänger-Themen 6
T Rot-schwarz Baum Problem Java Basics - Anfänger-Themen 3
A Rekursion in Baum und ArrayList als Rückgabe Java Basics - Anfänger-Themen 2
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
C 2-3 Baum Java Basics - Anfänger-Themen 6
H Baum Java Basics - Anfänger-Themen 4
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
L eigenen Baum schreiben Java Basics - Anfänger-Themen 5
Luk10 Anzahl der Knoten in einem Baum ausgeben! Java Basics - Anfänger-Themen 6
T Array in einen Baum zu überführen Java Basics - Anfänger-Themen 3
S Das reinschreiben einer Klasse in den Baum Java Basics - Anfänger-Themen 6
H B-Baum: Knoten Position als Parameter oder als Variable im Objekt? Java Basics - Anfänger-Themen 4
A Baum mit geometricfigur Werte Java Basics - Anfänger-Themen 6
D Datentypen Einfügen im RotSchwarz Baum Java Basics - Anfänger-Themen 2
F FileSystem in Baum darstellen/wurzel festlegen Java Basics - Anfänger-Themen 3
G List als Rückgabewert einer rekursiven Methode (Baum) Java Basics - Anfänger-Themen 3
P Binärer Baum mit Composite-Entwurfsmuster Java Basics - Anfänger-Themen 2
L Baum Swing AVL Java Basics - Anfänger-Themen 4
Binary.Coder 2-3-4 Baum vs. (2,4) Baum Java Basics - Anfänger-Themen 2
ModellbahnerTT Ab-Baum Applet Java Basics - Anfänger-Themen 3
P Baum-Menü in Java Java Basics - Anfänger-Themen 5
H Baum Java Basics - Anfänger-Themen 11
G AVL Baum Java Basics - Anfänger-Themen 20
J Baum spiegeln Java Basics - Anfänger-Themen 7
N 2-3 Baum, Einfügen Java Basics - Anfänger-Themen 5
G Rekursion mit Return - Baum durchlaufen Java Basics - Anfänger-Themen 4
G Baum Datenstruktur Java Basics - Anfänger-Themen 2
V Baum mit log n Aufwand für Einfügen und Löschen und. Java Basics - Anfänger-Themen 5
H Tiefensuche im binären Baum Java Basics - Anfänger-Themen 2
P Problem mit Darstellung im Baum Java Basics - Anfänger-Themen 4
G Binärer Baum Java Basics - Anfänger-Themen 3
M Binärer Baum Tiefe Java Basics - Anfänger-Themen 14
G universeller baum Java Basics - Anfänger-Themen 13
G Baum testen Java Basics - Anfänger-Themen 20
B Array To Baum Java Basics - Anfänger-Themen 2
B Baum to Array Java Basics - Anfänger-Themen 17
H Löschen in einem binären Baum führt zu einem StackOverflow Java Basics - Anfänger-Themen 2
L Binären Baum speichern Java Basics - Anfänger-Themen 6
R Pythagoras-Baum Java Basics - Anfänger-Themen 5
W Baum durchlaufen Java Basics - Anfänger-Themen 3
T binärer Baum Java Basics - Anfänger-Themen 3
G eine Knoten aus einem Baum löschen. [SOLVED] Java Basics - Anfänger-Themen 7
P allg. Baum aus Liste Java Basics - Anfänger-Themen 2
J String in binären Baum umwandeln Java Basics - Anfänger-Themen 7
R binärer Baum Java Basics - Anfänger-Themen 2
F Abstrakte Klasse Baum Java Basics - Anfänger-Themen 6
Messoras Sortieralgorithmus graphisch darstellen Java Basics - Anfänger-Themen 6
Z Netzwerk graphisch Darstellen Java Basics - Anfänger-Themen 5
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
X Wie kann man ein Regex erstellen, die 8-Bit-Binär-Zahlen darstellen. Java Basics - Anfänger-Themen 1
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Binominalkoeffizient tail-rekursiv in java darstellen Java Basics - Anfänger-Themen 0
S CSV Datei auslesen und anders darstellen Java Basics - Anfänger-Themen 2
F Hierarchi im code darstellen Java Basics - Anfänger-Themen 11
E Kreis soll eine Raupe darstellen Java Basics - Anfänger-Themen 37
Orkanson Long Binär darstellen Java Basics - Anfänger-Themen 1
J Eingelesene Datei im Histrogramm darstellen Java Basics - Anfänger-Themen 3
pkm Best Practice BufferedImage in JPane darstellen - aber wie? Java Basics - Anfänger-Themen 22
D Klassen Wert aus JTextfield in JLabel (andere Klasse) darstellen. Java Basics - Anfänger-Themen 60
kilopack15 DoWhile-Schleife als While-Schleife darstellen Java Basics - Anfänger-Themen 9
X Minimax-Algorithmus über alle Kanten möglich? - Kanten darstellen Java Basics - Anfänger-Themen 1
E Input/Output Switch ausgabe anpassen bzw. anders darstellen Java Basics - Anfänger-Themen 13
L Mit java ein wort mehrfach versetzt darstellen Java Basics - Anfänger-Themen 14

Ähnliche Java Themen

Neue Themen


Oben