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

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

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

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

Это то, что происходит, когда я прокручиваю

Как я могу получить края для прокрутки?

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

1 ответ

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

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

Другие вопросы по тегам