絶対ノード位置インデックスでの作業は、特定の状況では不便です。
例えば、2 つのノードが同じレベルに属している場合に、
ノードの絶対位置を固定することなく、1
つのノードを、もう一方のノードよりも低いインデックスの位置に配置するように強制する必要が生じることがあります。
これを実現するには、相対位置制約を使用します。
相対位置制約は、あるレベルのノードで特定の順序を強制しますが、直接隣接するノードを指定しません。
例えば、相対位置制約は、
nodeA
を nodeB
よりも低い位置のどこかに配置するように強制できますが、 nodeA
と nodeB
の間に多数のノードが配置される可能性があります。以下を呼び出します。
layout.addConstraint(new ibm_ilog.graphlayout.hierarchical.HierarchicalRelativePositionConstraint(nodeA,nodeB,priority));
これは、
nodeA
を、nodeB
より低い位置に配置するように強制します。
方向選択が下向きの場合は、ノードは水平レベルに配置されます。そのため、制約は、 nodeA
が nodeB
の左側に配置されることを意味します。
方向選択が右向きの場合は、ノードは垂直レベルに配置されます。そのため、制約は、 nodeA
が nodeB
より下に配置されることを意味します。 相対位置制約は、両方のノードが実際に同じレベルに属している場合にのみ効果があります。
これを実現するため、例えば、さらに同一レベル制約を使用することもできます。
別のレベルに属しているノードの相対位置に影響を与える方法はありません。
相対レベル制約と同様に、相対位置制約はノード・グループに適用できます。
これらの制約には、制約の競合が生じた場合に優先される制約を示す優先度もあります。
優先度が高ければ高いほど、制約の競合の解決時にその制約が満たされる可能性が高くなります。