# Dendrogramm zeichnen



## bladepit (24. Aug 2011)

Hallo an alle,

da ich seit ca. 2 Wochen versuche Forester (von Archeopteryx) zu nutzen um ein Dendogram zeichnen zu lassen aber das alles nicht funktioniert bin ich nun mit meinen Möglichkeiten am Ende und wollte diesen nun selber zeichnen. Ich habe alle Informationen die das Dendogram angehen vorliegen.

Ich muss es nur zeichnen. Ich würde da gerne eine eigene Komponente machen. Oder hat einer ne gute API für sowas. Ich habe noch nie selber was gezeichnet etc. also nehmt Rücksicht auf meine Ungewissheit. 

Also kann mir da einer Tipps geben (für ein gutes Tutorial) oder sogar schon was fertiges was ich nutzen kann.

Gruß

bladepit


----------



## AlexSpritze (24. Aug 2011)

Was ist ein Dendogram? ... Du meinst nicht zufällig ein _Dendrogramm_?


----------



## bladepit (24. Aug 2011)

Ja mein ich...sry...war ein Schreibfehler. War doch was früh....


----------



## Alan47 (24. Aug 2011)

@bladepit: Hm, also es gibt schon eine Bibliothek für Diagramme in Swing (ich erinnere mich nicht mehr genau an den Namen aber Google hilft dir da sicher weiter), allerdings weiß ich nicht ob die soetwas unterstützt...

Tatsache ist jedoch, dass es für solche Fälle das *Graphics*-Objekt gibt. Jede visuelle Swing-Komponente (sei es ein JPanel, ein Button....) hat ein solches Objekt und benutzt es, um sich auf den Bildschirm zu zeichnen. Wenn du jetzt zum Beispiel ein Diagramm auf deinen Bildschirm zeichnen möchtest, würde ich dir raten, als Erstes mal *JPanel* zu extenden. JPanels sind von natur aus "leere" Flächen, solange man nichts hinzufügt, also ideal, wenn man selber was zeichnen will. In deiner Klasse kannst du dann die *paint*-Methode überschreiben:


```
public class Diagram extends JPanel{
  
   @Override
   public void paint(Graphics g){
      // cast Graphics object to Graphics2D for extended functionality
      Graphics2D graphics = (Graphics2D)g;
      // draw diagram here
   }

}
```

Mit hilfe der Methode drawLine kannst du jetzt Linien zeichnen. Hilfreich in diesem Zusammenhang sind auch setColor und analog dazu setFont. Wenn man Flächen ausfüllen will ist fillRect auch sehr praktisch. Damit lässt sich (mit dem entsprechenden Aufwand...) alles zeichnen was du brauchst - imho der coolste Aspekt an Swing 


Gruß,


Alan


----------



## AlexSpritze (25. Aug 2011)

Wenn du es nicht selbst zeichnen willst, kannst du den Job auch an GraphViz übergeben. Du müsstest die Zeichenaufgabe nur entsprechend dekodieren. Du setzt quasi nicht selber die Pixel, sondern sagst GraphViz wo es deine Objekte, zeichnen soll.

GraphViz scheint da schon recht ausgereift zu sein.


----------

