Self-Links (selbstverweisende Links) sind Links, die an demselben Knoten beginnen und enden.
Sie können sogar als Mehrfachlinks vorkommen. In diesem Fall werden sie als Multiself-Link-Paket bezeichnet.
Wenn Links gerade ausgerichtet sind, sind Self-Links nicht sichtbar, weil sie an demselben Punkt in der Mitte des Knotens beginnen und enden.
Zur Vermeidung dieses Effekts haben die in Layoutalgorithmen, die Unterklassen des Basislinkstillayouts sind
aufgelisteten Layouts einen so genannten Self-Link-Modus,
der nur angewendet wird, wenn STRAIGHT_LINE_STYLE als Linkstil definiert ist.
Trotz des Namens des Linkstils bewirkt die Kombination von Modus und Stil dazu, dass den Self-Links
Kurven hinzugefügt werden, um sie sichtbar zu machen.
Wenn NO_RESHAPE_STYLE als Linkstil definiert ist,
hat der Self-Link-Modus keine Wirkung.
Beispiel für die Steuerung von Self-Links
Verwenden Sie die folgende Methode, um den Self-Link-Modus zu aktivieren:
layout.setSelfLinkMode(mode);
Die gültigen Werte für den Modus sind im Beispiel für das kräftegesteuerte Layout (Force-directed)
beschrieben:
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.NO_BENDS: Self-Links werden nicht Kurven umgeformt und sind möglicherweise nicht sichtbar.
- ibm_ilog.graphlayout.forcedirected.ForceDirectedLayout.NARROW_CONNECTED_RECTANGULAR: Dieser Modus ist der Standardmodus.
In allen Modi mit Ausnahme des Modus "no-bends" werden drei orthogonal platzierte Kurven
erstellt, so dass die Segmente in etwa drei Vierteln eines Rechtecks oder eines Quadrats
entsprechen, und das vierte Viertel der Knoten ist, dem der Self-Link zugeordnet wird.
Je nach Knotenbemaßung werden in den Rechteckmodi Formen mit jeweils vier Ecken erstellt, die keine
Quadrate sind. In den Quadratmodi werden Quadrate erstellt.
Die Quadratmodi sind insbesondere hilfreich für Spline-Self-Links, weil die Spline
dann ungefähr drei Vierteln eines Kreises gleichen kann.
Modus | Grafisches Ergebnis |
---|---|
Modus CONNECTED_RECTANGULAR | ![]() |
Modus CONNECTED_SQUARE | ![]() |
Modus CONNECTED_SQUARE mit Spline-Link | ![]() |
In den verbundenen Modi werden die Verbindungspunkte
auf dem Rand des Knotens platziert.
In den freien Modi werden die Kurven an derselben Position wie in den entsprechenden verbundenen Modi platziert,
aber der Linkverbindungspunkt wird nicht erzwungen, d. h., Knoten und Links können die Platzierung des Verbindungspunkts frei wählen.
Die Linksegmente in den freien Modi sind möglicherweise nicht orthogonal, weil der Verbindungspunkt nicht erzwungen wird.
Der Modus "narrow" und die anderen Modi verhalten sich für einzelne Self-Links identisch.
Wenn Sie mehrere Self-Links in demselben Knoten haben, werden die
Self-Links um ein Offset versetzt, um Überschneidungen zu vermeiden.
In diesem Fall unterscheidet sich der Modus "narrow" von den anderen Modi: Das Multiself-Link-Paket
kann schmaler erscheinen, weil der Versatz der Self-Links durch die Größe des Endknotens beschränkt wird.
Beispiele für die Verwendung von Modus und Offset | Grafisches Ergebnis |
---|---|
Modus CONNECTED_SQUARE | ![]() |
Modus NARROW_CONNECTED_SQUARE | ![]() |
Self-Links können an allen vier Ecken des Knotens vorkommen.
Der Algorithmus bestimmt anhand der Richtung aller anderen Links automatisch, welche Ecke am besten geeignet ist.
Sie können die zu verwendende Ecke beschränken.
Verwenden Sie die folgende Methode:
layout.setSelfLinkAllowedCorners(corners);
Die zulässigen Ecken sind eine Kombination mit bitweisem ODER, die über die folgenden Konstanten ausgewählt wird, z. B.
im kräftegesteuerten Layout (Force-directed):
Standardmäßig sind Self-Links im Uhrzeigersinn ausgerichtet. Sie können andere Ausrichtungen angeben:
Verwenden Sie die folgende Methode:
setSelfLinkOrientation(orientation);
Die gültigen Werte für orientation sind, wie anhand des Beispiels für das kräftegesteuerte
Layout (Force-directed)
erkennbar, folgende:
- Self-Links beginnen mit einem horizontalen Segment und enden mit einem vertikalen Segment.
- Self-Links beginnen mit einem vertikalen Segment und enden mit einem horizontalen Segment.