Affichage de l'Arborescence Hiérarchique sur le Canevas Java SWT Draw2d


J'ai une structure de données arborescente qui stocke des informations. Comment puis-je déterminer le placement correct de chaque nœud,c'est-à-dire les emplacements x, y de l'arbre sur le canevas, de sorte que rien ne se chevauche et que tous les nœuds frères et sœurs soient au même niveau? Mes tentatives d'atteindre aucun des deux. Merci bien. J'avais quelque chose comme ça en tête, à afficher sur la toile.

      A
     / \
    B   C
  / | \  \
 D  E  F  G
           \
           H
Author: Asher, 2014-07-28

2 answers

Plutôt que de réinventer la roue, vous pouvez simplement utiliser une bibliothèque qui implémente déjà plusieurs algorithmes de mise en page.

Zeste semble le meilleur choix ici.

Ici vous pouvez trouver un article brillant à ce sujet et surtout cette section sur les gestionnaires de mise en page devrait vous aider (TreeLayoutAlgorithm).

 2
Author: Baz, 2014-07-28 10:39:10

Si votre implémentation d'arborescence est solide, vous devriez pouvoir savoir combien d'enfants un nœud a. Sur cette base, vous pouvez calculer l'espacement entre les frères et sœurs lors du dessin. Publier un exemple de dessin serait exagéré pour cette réponse.

Tout d'abord, essayez-le pour une petite structure arborescente, comme celle de votre question. Si cela fonctionne, rendez-le générique pour N nœuds et niveaux d'arbre. Vous pouvez modifier les espacements dans le dessin par la suite.

 0
Author: GGrec, 2014-07-28 10:32:43