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

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

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

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

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

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


person Maximilian Csuk    schedule 02.05.2014    source источник


Ответы (1)


Вы можете попробовать Orthogonal 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);
person Bence Kaulics    schedule 21.08.2014