Class DrawTree

java.lang.Object
   |
   +----java.awt.Component
           |
           +----java.awt.Canvas
                   |
                   +----DrawTree

public class DrawTree
extends Canvas
Diese Klasse implementiert die ganze graphische Darstellung eines binären Baumes. Sie wird etwa in TreeAlgorithm und Subklassen verwendet. Vorhanden sind Routinen zum (animierten) Zeichen eines Baumes und markieren von Knoten. Zur flackerfreien Darstellung wird Doppelpufferung verwendet.

See Also:
DrawItem, TreeAlgorithm

Constructor Index

 o DrawTree()

Method Index

 o animateTreeChange(Node, int)
Animierter Baumwechsel.
 o createPuffer()
Erzeugt einen Puffer.
 o drawElement(DrawItem, Graphics)
Zeichnet einen einzelnen Knoten.
 o drawRec(Node, Graphics)
Zeichnet den Baum.
 o getPreferredSize()
 o markNode(Node)
markiert Knoten.
 o paint(Graphics)
 o setSize(int, int)
Grössen einstellen.
 o setStatusText(String)
schreibt einen Text in die Graphik.
 o setTree(Node)
Setzt den von DrawTree zu zeichnenden Baum.
 o update(Graphics)

Constructors

 o DrawTree
 public DrawTree()

Methods

 o setTree
 public void setTree(Node t)
Setzt den von DrawTree zu zeichnenden Baum. Zusätzlich werden mit adjustNodePos die Koordinateneinträge in den DrawItem-Elementen jeden Knotens angepasst, und die Zeichenfläche (im Puffer) wird gelöschst. Diese Methode muss vor dem ersten Zeichnen aufgerufen werden.

Parameters:
t - (Wurzel-)Knoten des zu zeichnenden Baumes.
See Also:
pausePaint, animateTreeChange
 o animateTreeChange
 public void animateTreeChange(Node t,
                               int step)
Animierter Baumwechsel. Die Funktionalität ist im wesentlichen die gleiche wie bei setTree, über den Parameter step lässt sich die Grösse der Verschiebung der Knoten in der Graphik steuern : verschoben wird um 1/step. Für step=1 ist animateTreeChange äquivalent zu setTree.

Parameters:
t - (Wurzel-)Knoten des zu zeichnenden Baumes.
step - Schrittgrösse bei Verschiebung der Knoten beim neuzeichnen.
See Also:
pauseAnimateTreeChange, setTree
 o markNode
 public void markNode(Node p)
markiert Knoten. In der Graphik (im Puffer) wird ein Knoten markiert. Diese Routine ist nach setTree und vor repaint aufzurufen.

Parameters:
p - Knoten, der markiert wird
See Also:
pauseMarkNode
 o setStatusText
 public void setStatusText(String s)
schreibt einen Text in die Graphik. Dieser Text wird bei jedem Zeichnen ausgegeben.

Parameters:
s - auszugebender Text
 o setSize
 public void setSize(int off,
                     int rad)
Grössen einstellen. Hier werden die Grössenmasse der graphischen Darstellung eingestellt.

Parameters:
off - neuer Offset
rad - neuer Radius
Overrides:
setSize in class Component
 o drawRec
 protected void drawRec(Node p,
                        Graphics g)
Zeichnet den Baum. drawRec zeichnet rekursiv den Baum. Diese Methode wird von paint aufgerufen. Vorher ist ein Aufruf von adjustNodePos nötig, um die Koordinaten der Knoten anzupassen.

See Also:
adjustNodePos, paint
 o drawElement
 protected void drawElement(DrawItem d,
                            Graphics g)
Zeichnet einen einzelnen Knoten. Wird innerhalb von drawRec aufgerufen, und zeichnet mittels der Informationen im DrawItem die graphische Darstellung eines Knotens.

See Also:
drawRec, DrawItem
 o createPuffer
 public void createPuffer()
Erzeugt einen Puffer. Hier wird der Puffer für die Doppelpufferung erzeugt. Bei Bedarf wird der Puffer vergrössert (nicht verkleinert !) Wird von paint aufgerufen.

See Also:
puffer
 o paint
 public void paint(Graphics g)
Overrides:
paint in class Canvas
 o update
 public void update(Graphics g)
Overrides:
update in class Component
 o getPreferredSize
 public Dimension getPreferredSize()
Overrides:
getPreferredSize in class Component