整列オプションは、親が子ノードに対してどのように配置されるのかを制御します。
整列は、グローバルに設定できます。この場合、すべてのノードは同じように整列されます。
また、ノードごとにローカルに設定することもでき、その場合、同じ描画で異なる整列が生じます。

整列オプション
グローバル整列
グローバル整列を設定するには、以下のようにします。
treeLayout.setGlobalAlignment(ibm_ilog.graphlayout.tree.TreeLayout.WEST);
グローバル整列の有効値は、以下のとおりです。
- ibm_ilog.graphlayout.tree.TreeLayout.CENTER (デフォルト)親は、子ノードの中心を考慮に入れて、子ノードの上に中央揃えで配置されます。
- ibm_ilog.graphlayout.tree.TreeLayout.BORDER_CENTER親は、子ノードのボーダーを考慮に入れて、子ノードの上に中央揃えで配置されます。 最初の子と最後の子のサイズが異なる場合は、ボーダー中央揃えでは、親は、デフォルトの中央揃えよりも、大きい方の子の近くに配置されます。
- ibm_ilog.graphlayout.tree.TreeLayout.EAST親は、一番東の子のボーダーに整列されます。 例えば、方向選択が下向きの場合、東は右方向です。 方向選択が上向きの場合、東は左方向です。 詳しくは、位置レイアウト・パラメーターのコンパス方向の使用 (TL) を参照してください。
- ibm_ilog.graphlayout.tree.TreeLayout.WEST親は、一番西の子のボーダーに整列されます。 例えば、方向選択が下向きの場合、西は左方向です。 方向選択が右向きの場合、西は下方向です。 詳しくは、位置レイアウト・パラメーターのコンパス方向の使用 (TL) を参照してください。
- ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST子ノードは並列ではなく順次に配置され、親ノードは子ノードへのオフセットを使用して配置されます。子ノードは、親ノードの東側になります。詳しくは、傾斜整列 を参照してください。
- ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_WEST子ノードは並列ではなく順次に配置され、親ノードは子ノードへのオフセットを使用して配置されます。子ノードは、親ノードの西側になります。詳しくは、傾斜整列 を参照してください。
- ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST_WEST子ノードは並列ではなく順次に配置され、親ノードは子ノードへのオフセットを使用して配置されます。子ノードは、親ノードの両側に配置されます。 最初の子ノードは、東側に配置されます。後続の子ノードは、 両側で使用されるスペースがほぼ同じになるように東側または西側に配置されます。 すなわち、東側のサブツリーの全体の高さは、西側のサブツリーの全体の高さとほぼ同じになります。 詳しくは、傾斜整列 を参照してください。
- ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_BOTH_SIDES子ノードは、並列ではなく順次に配置されます。 整列
TIP_OVER
では、すべての子ノードは親と同じ側に配置されますが、 この整列では、子ノードは親の両側に配置されます。 TIP_OVER_EAST_WEST 整列と異なり、 このスタイルは、両側で使用されるスペースを最適化しようとせずに、 常に、奇数番目の子ノードを西側に、偶数番目の子ノードを東側に配置します。 子ノードの各ペア (西側に配置された子ノードと東側に配置された子ノードのペア) は、 奇数番目のノードと偶数番目のノードで相互に位置合わせされます。 詳しくは、傾斜整列 を参照してください。 - ibm_ilog.graphlayout.tree.TreeLayout.MIXED各親ノードに異なる整列を設定できます。 個別ノードの整列を設定することができますが、 その結果、同じグラフ内で異なる整列が実行される場合があります。
個別ノードの整列
グローバル整列が
MIXED
に設定されていない限り、すべてのノードの整列は同じになります。
グローバル整列が MIXED
に設定されている場合のみ、各ノードに個別の整列スタイルを設定できます。
同じ描画内に混合された各種整列
個別ノードの整列を指定するには、以下のようにします。
以下のメソッドを使用します。
treeLayout.setGlobalAlignment(ibm_ilog.graphlayout.tree.TreeLayout.MIXED); treeLayout.setAlignment(graph.children[1], ibm_ilog.graphlayout.tree.TreeLayout.EAST);
alignment
の有効な値は、次のとおりです。- ibm_ilog.graphlayout.tree.TreeLayout.CENTER (デフォルト値)
- ibm_ilog.graphlayout.tree.TreeLayout.BORDER_CENTER
- ibm_ilog.graphlayout.tree.TreeLayout.EAST
- ibm_ilog.graphlayout.tree.TreeLayout.WEST
- ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST
- ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_WEST
- ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST_WEST
- ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_BOTH_SIDES
傾斜整列
通常、ノードの子ノードは、兄弟をお互いの直接の隣接ノードとして配置して、並列 に配置されます。
代わりに、傾斜整列では、子ノードは順次 に配置されます。

通常の整列および傾斜整列
傾斜整列は、ツリーのリーフ数が多い場合に有用です。
通常の整列では、リーフが多いツリーの場合、レイアウトの横幅が長くなってしまいます。グローバル整列スタイルを傾斜に設定すると、描画は、横幅が広くなる代わりに縦に長くなります。
描画の幅と高さとのバランスを取るために、グローバル整列を混合に設定できます。
例:
treeLayout.setGlobalAlignment(ibm_ilog.graphlayout.tree.TreeLayout.MIXED);
また、以下のように、多数の子ノードを持つ一部の親に対して、個別整列を傾斜に設定することもできます。
treeLayout.setAlignment(parent, ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST);
傾斜整列は、ノードの一部またはすべてに対して明示的に指定できます。ツリー・レイアウトでは、いつ傾斜するかを自動的に判別して、指定したアスペクト比に適した描画を実現するレイアウト・モードが用意されています。これらのレイアウト・モードについては、傾斜レイアウト・モード で説明します。
傾斜東整列は、親ノードを起点とする中央線の東側にノードを配置します。
傾斜西整列は、中央線の西側にノードを配置します。
このほかにも、中央線の両側にサブツリーを分散する 2 つのバリアントもあります。
これらのバリアントは、子ノード数が多い親ノードで、以下のコードにより指定できます。
treeLayout.setAlignment(parent, ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_EAST_WEST);
または
treeLayout.setAlignment(parent, ibm_ilog.graphlayout.tree.TreeLayout.TIP_OVER_BOTH_SIDES);
以下の図は、傾斜東西整列と傾斜両側整列の違いを示しています。
![]() |
![]() |
傾斜東西整列 | 傾斜両側整列 |
傾斜整列は、直交リンク・スタイルと使用すると効果的です。リンク・スタイル (TL) を参照してください。次の図は、
片側の傾斜と両側の傾斜の違いを示しています。
傾斜整列は、赤色のノードに指定されています。
青色のノードは中央揃えになっています。

傾斜整列
子整列
グローバル整列は、すべてのノードで有効です。あるノードで指定された整列は、
そのノードのすべての子ノードで有効になります。さらに、
特定のノードについて例外を指定し、他のすべての子ノードとは異なる方法で整列させることができます。
これは、組織チャート表示に便利です。
管理階層を示す組織チャートで、表示されている一部の人々は階層に属していません。
その代わりに、階層の特定のメンバーに関連付けられています。
このような例として、会社の管理者の下で働く秘書が考えられます。
秘書を表すノードは、組織チャート・ツリーにおいて、通常、管理者のノードの近くに表示されますが、
その管理者の下で働く一般社員を表す子ノードとは混合されていません。
特定のノードの子整列を設定するには、以下のようにします。
以下のメソッドを使用します。
treeLayout.setChildAlignment(node, alignment);
treeLayout.getChildAlignment(node);
子整列に有効な値は以下のとおりです。
- 子ノードに例外整列を指定しません。 通常の子ノードのように配列されます。
- 子ノードは、その親の東側に隣接して配置されます。
- 子ノードは、その親の西側に隣接して配置されます。
- 子ノード・レイアウトは、傾斜東整列のようになりますが、 ノードはすべての通常の子ノードの上に表示されます。通常の子ノードの整列は任意です。 通常の子ノードも傾斜東整列である場合は、 異なる間隔を使用して関連ノードを区別することができます。 間隔パラメーター を参照してください。
- 子ノード・レイアウトは、傾斜西整列のようになりますが、 ノードはすべての通常の子ノードの上に表示されます。通常の子ノードの整列は任意です。 通常の子ノードも傾斜西整列である場合は、 異なる間隔を使用して関連ノードを区別することができます。 間隔パラメーター を参照してください。
- 子ノード・レイアウトは、傾斜両側整列のようになります (すなわち、 東側と西側に交互に整列されます) が、ノードはすべての通常の子ノードの上に表示されます。通常の子ノードの整列は任意です。 通常の子ノードも傾斜両側整列である場合は、 異なる間隔を使用して関連ノードを区別することができます。 間隔パラメーター を参照してください。
以下の図で、黄色のノードは子整列 EAST_NEIGHBOR または WEST_NEIGHBOR、
赤色のノードは子整列 TIP_OVER_ASSOCIATE_EAST または TIP_OVER_ASSOCIATE_BOTH_SIDES が指定されています。
緑色のノードには子整列が指定されていません。すなわち、グローバル整列スタイルで配置されます。
![]() |
![]() |
示されている整列は、黄色のノードが EAST_NEIGHBOR、 赤色のノードが TIP_OVER_ASSOCIATE_EAST、緑色のノードが CENTER です | 示されている整列は、黄色のノードが EAST_NEIGHBOR、 赤色のノードが TIP_OVER_ASSOCIATE_EAST、緑色のノードが TIP_OVER_BOTH_SIDES です |
![]() |
![]() |
示されている整列は、黄色のノードが WEST_NEIGHBOR、 赤色のノードが TIP_OVER_ASSOCIATE_BOTH_SIDES、緑色のノードが CENTER です | 示されている整列は、黄色のノードが WEST_NEIGHBOR、 赤色のノードが TIP_OVER_ASSOCIATE_BOTH_SIDES、緑色のノードが TIP_OVER_BOTH_SIDES です |