Ajout d'une racine invisible à l'agencement
Si le graphe contient plusieurs arborescences déconnectées les unes des autres, l'agencement les positionne individuellement les unes à côté des autres. Chaque composant connecté possède sa propre structure radiale avec des couches circulaires. Toutefois, il est parfois approprié de faire tenir tous les composants connectés dans une seule structure de couche circulaire. Le concept sous-jacent consiste à ajouter une racine invisible au centre et à connecter toutes les arborescences déconnectées à cette racine. La figure Agencement des composants connectés sans et avec une racine invisible illustre l'effet de l'utilisation d'une racine invisible. Cela s'applique uniquement si le mécanisme générique d'agencement des composants connectés est désactivé.
Pour ajouter une racine invisible à l'agencement :
Appelez les méthodes suivantes :
treeLayout.setLayoutOfConnectedComponentsEnabled(false); treeLayout.setInvisibleRootUsed(true);

Agencement des composants connectés sans et avec une racine invisible
Espacement équidistant pour le premier cercle
Le mode radial est conçu pour optimiser l'espace de telle sorte que le rayon des cercles soit petit et l'espace global pour l'ensemble de l'agencement soit petit. Pour ce faire, l'algorithme d'agencement peut créer des écarts plus importants sur les cercles internes afin d'optimiser l'utilisation de l'espace des cercles externes. Cela peut produire des cercles espacés à intervalles irréguliers, surtout pour le premier cercle où tous les noeuds ont le même noeud parent.
Pour éviter cet effet, vous pouvez forcer l'espacement équidistant des noeuds sur l'ensemble du premier cercle. En fonction de la structure du graphe, cela peut entraîner un gaspillage d'espace plus important par l'ensemble de l'agencement sur les autres cercles, mais le graphe obtenu peut être plus attrayant.
Pour activer l'espacement équidistant :
Utilisez la méthode setFirstCircleEvenlySpacing :
treeLayout.setFirstCircleEvenlySpacing(true);

Espacements équidistant et à intervalles irréguliers pour le premier cercle
A l'attention des experts : forcer le mode alternatif pour tous les niveaux
Lorsque le mode d'agencement
ALTERNATING_RADIAL
est utilisé, l'agencement vérifie si l'organisation de noeuds alternative appliquée à un niveau permet d'économiser de l'espace. Si tel n'est pas le cas, l'agencement utilise l'organisation radiale normale. Par conséquent, pour de nombreux graphes éparses, le mode radial normal et le mode radial alternatif produisent le même résultat car l'organisation alternative ne permet d'économiser de l'espace à aucun des niveaux. Il est possible de désactiver la vérification de l'espace, autrement dit, d'exécuter une organisation alternative pour tous les niveaux même si cela entraîne un gaspillage de l'espace. Utilisez la méthode setAllLevelsAlternating :
treeLayout.setAllLevelsAlternating(true);
A l'attention des experts : multiplication des cercles par niveau alternativement
Lorsque le mode d'agencement
ALTERNATING_RADIAL
est utilisé, l'agencement positionne les noeuds du même niveau alternativement sur deux cercles et non sur un seul cercle. Il est possible d'augmenter le nombre de cercles.Utilisez la méthode setNumberOfAlternatingCircles :
treeLayout.setNumberOfAlternatingCircles(3);
Dans ce cas, trois cercles sont utilisés. Cela signifie que si l'indicateur allLevelsAlternating a pour valeur
true
, l'agencement positionne chaque niveau de noeud sur trois cercles alternativement. Si l'indicateur allLevelsAlternating a pour valeur false
, l'agencement vérifie si chaque niveau nécessite plus d'espace pour positionner les noeuds sur un cercle ou sur trois cercles. Vous ne devez pas utiliser une valeur élevée pour le nombre de cercles alternatifs, car cela ralentit l'algorithme et peut générer des intersections de liaisons.Si vous définissez la valeur
0
pour le nombre de cercles alternatifs et que l'indicateur allLevelsAlternating a pour valeur false
, ce cas est particulier. Dans ce cas, une méthode heuristique tente de calculer automatiquement le nombre de cercles par niveau le plus approprié. Par conséquent, chaque niveau peut avoir un nombre de cercles différent, en fonction du nombre de noeuds et des relations de type noeuds frères entre les noeuds.A l'attention des experts : définition d'un angle enfant maximum
Si un noeud comporte beaucoup de noeuds enfants, ceux-ci peuvent s'étendre sur une partie importante du cercle, et, dans ce cas, ils sont positionnés à environ 360 degrés autour du noeud. Cela peut entraîner le chevauchement de liens sur certains noeuds.
Ce manque d'espace peut être résolu en augmentant le décalage entre parent et noeuds enfants. Toutefois, cela affecte l'agencement de façon globale. Autrement dit, les noeuds qui ne sont pas concernés par le manque d'espace sont également affectés. Pour éviter un tel changement global, vous pouvez limiter l'angle maximum entre deux rayons à partir d'un parent (si celui-ci ne correspond pas à la racine) et ses deux noeuds enfants situés le plus à l'extérieur. Cette action permet d'augmenter le décalage entre le parent et les noeuds enfants uniquement lorsque cela est nécessaire.
Dans la figure Angle enfant maximum, de nombreux liens chevauchent d'autres noeuds dans l'agencement représenté à gauche. L'agencement représenté à droite illustre la façon dont ce problème a été résolu : un angle enfant maximum a été défini entre deux rayons à partir d'un parent et ses noeuds enfants situés le plus à l'extérieur.

Angle enfant maximum
Pour définir un angle en degrés :
Utilisez la méthode setMaxChildrenAngle :
treeLayout.setMaxChildrenAngle(100);
Les valeurs recommandées sont
30
-180
. Lorsque la valeur définie est 0
, l'angle est illimité. Le calcul de l'angle n'est pas précis au-dessus de 180 degrés ou si le rapport hauteur/largeur est différent de 1,0.