Как перемещать края графика при прокрутке в JUNG

Я использую JUNG 2.0 для визуального рендеринга ориентированного ациклического графа и добавил пользовательский EdgeRenderer для рендеринга ребер в различных цветах. Фактические края рисуются путем вызова методов drawLine() и drawPolyline() для объекта RenderContext.

Все работает как надо, за исключением случаев, когда я вручную прокручиваю GraphZoomScrollPane, к которому добавляется мой объект VisualizationViewer: тогда вершины прокручиваются, как и ожидалось, но линии краев остаются точно в одном и том же месте на экране. То есть:

Это правильно

Вот что происходит при прокрутке

Как я могу заставить края прокручиваться?

(Если это помогает, масштабирование с помощью CrossoverScalingControl работает отлично, и края увеличиваются и уменьшаются в правильном положении.)


person player.mdl    schedule 06.03.2017    source источник


Ответы (1)


Похоже, вы рисуете края в неправильном координатном пространстве. Существует две системы координат: координаты макета и координаты рендеринга. Вам нужно убедиться, что вы используете правильные в правильном контексте (и, в частности, что вы используете ту же систему координат для вершин, что и для ребер).

Если вы можете предоставить немного больше контекста в своем вопросе о том, как вы на самом деле вызываете draw*Line(), и чем это отличается от того, как это делает JUNG, вероятно, будет легче точно установить, что вам нужно исправить.

person Joshua O'Madadhain    schedule 09.03.2017