Ограничения на то, где ребра соединяются с вершиной (JGraphX)

Я заметил, что при соединении нескольких ребер с одной (прямоугольной) вершиной положения, где они соединяются, равномерно распределяются по всей стороне вершины. Есть ли способ изменить это поведение? Я использую mxHierarchicalLayout.

На моем графике я хочу, чтобы края были как можно более прямыми (но только горизонтальными и вертикальными). Вот что у меня сейчас есть:

введите описание изображения здесь

Например, почему край "G" слегка изгибается? Я бы хотел, чтобы он шел по прямой горизонтальной линии от "PIC" до "W4". В идеале я хотел бы изменить настройку для каждой вершины, которая задает поведение соединения ребер, чтобы "соединяться там, где вам нравится", и позволить компоновке определить лучшее место, где ребро образует наименьшее количество углов.

Я знаю, что могу установить "exitX/Y" и "entryX/Y", но это потребует от меня расчета этих значений и всего процесса верстки вручную. Я ищу лучший способ добиться этого.

1 ответ

Вы можете попробовать Ортогональный edgeStyle.

Map<String, Object> EdgeStyle = graph.getStylesheet().getDefaultEdgeStyle();
EdgeStyle.put(mxConstants.STYLE_EDGE, mxEdgeStyle.OrthConnector);
EdgeStyle.put(mxConstants.STYLE_STROKECOLOR, "red");
EdgeStyle.put(mxConstants.STYLE_STROKEWIDTH, 2);

Это сделает ваши края похожими на приведенные ниже. Я думаю, что это должно работать и без портов.

Не забудьте включить использование стиля края в макете.

layout.setDisableEdgeStyle(false);
Другие вопросы по тегам