J'ai un graphique avec 18 sommets et beaucoup d'arêtes. En raison du nombre d'éléments impliqués et de leur structure, les algorithmes intégrés disponibles (c'est-à-dire mxHierarchicalLayout utilisé pour l'image affichée) ne fonctionnent pas comme prévu, provoquant le chevauchement de la majorité des bords avec la description, comme illustré dans l'image Current status sample.JGraphX: Repositionner le terminal sur les sommets
Faire des tests et des contrôles dans le code source, je réussi à changer que peu de choses sur les bords creux de la géométrie du mxCell:
- lable Edge
- points de contrôle
Cependant Je ne trouve aucun moyen de manipuler le point des terminaux source et cible. Quelqu'un peut-il me suggérer les bonnes classes/méthodes à utiliser pour contrôler où le terminal devrait être connecté.
Toute aide/information serait appréciée.
Le code I réussi à tester pour manipuler les bords est le suivant:
..
Arrays.asList(edges).stream().map(edge -> (mxCell) edge).forEach(edge -> {
mxGeometry newGeo = (mxGeometry) edge.getGeometry().clone();
// TODO calculate condition
// This code actually move the label from the default
// position
mxPoint offset = new mxPoint(edge.getGeometry().getPoint().getX() + EDGE_OFFSET,
edge.getGeometry().getPoint().getY() + EDGE_OFFSET);
newGeo.setOffset(offset);
newGeo.setX(newGeo.getX() + 1);
if (newGeo.getPoints() != null) {
newGeo.getPoints().forEach(point -> {
point.setX(point.getX() + 200);
point.setY(point.getY() + 200);
});
}
model.setGeometry(edge,newGeo);
});
Merci et salutations