L'utilisation d'index de position de noeud absolue n'est pas très pratique dans certaines situations. Par exemple, si deux noeuds appartiennent au même niveau, vous souhaiterez peut-être forcer un noeud à une position avec un index plus faible que l'autre noeud sans fixer les positions absolues des noeuds. Pour cela, vous pouvez utiliser une contrainte de position relative.
La contrainte de position relative force un classement spécifique
sur les noeuds d'un niveau, mais elle n'indique pas les noeuds qui sont
directement voisins. Par exemple, une contrainte de position relative peut
forcer
nodeA
à se placer à une
position inférieure à celle de nodeB
, mais il peut y avoir de nombreux noeuds
entre nodeA
et nodeB
. Appelez :
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalRelativePositionConstraint(nodeA,nodeB,priority));
Cela force
nodeA
à une
position inférieure à celle de nodeB
. Si la direction de flux est vers le bas, les noeuds sont sur des niveaux horizontaux ; de ce fait, la
contrainte signifie que nodeA
est placé sur le côté
gauche de nodeB
. Si la direction de flux est vers la droite, les noeuds sont sur des niveaux verticaux ; de ce fait, la
contrainte signifie que nodeA
est placé au-dessous de nodeB
. La contrainte de position relative n'a un effet que si les deux appartiennent
effectivement au même niveau. Pour cela, vous pouvez par exemple utiliser
également une contrainte de même niveau. Il n'est en aucun cas
possible d'influer sur la position relative des noeuds qui appartiennent à différents niveaux.
Tout comme la contrainte de niveau relatif, la contrainte de
position relative peut être appliquée aux groupes de noeuds. Ces contraintes
ont également des priorités qui indiquent les contraintes qui dominent en cas de conflit de contraintes. Plus la priorité est élevée, plus la contrainte est susceptible d'être
satisfaite lors de la résolution de conflits de contraintes.