Как переместить ребра графа при прокрутке в JUNG
Я использую JUNG 2.0 для визуальной визуализации ориентированного ациклического графа и добавил пользовательский EdgeRenderer для рендеринга краев в различных цветах. Фактические края нарисованы, вызывая drawLine()
а также drawPolyline()
методы на RenderContext
объект.
Все работает как надо, кроме случаев, когда я вручную прокручиваю GraphZoomScrollPane
к которому мой VisualizationViewer
объект добавлен: тогда вершины прокручиваются, как и ожидалось, но линии ребер остаются точно в том же месте на экране. То есть:
Это то, что происходит, когда я прокручиваю
Как я могу получить края для прокрутки?
(Если это помогает, масштабирование с CrossoverScalingControl
работает отлично, а края становятся все больше и меньше в правильных положениях.)
1 ответ
Похоже, вы рисуете края в неправильном координатном пространстве. Существует две системы координат: координаты макета и координаты рендеринга. Вы должны убедиться, что вы используете правильные в правильном контексте (и в частности, что вы используете ту же систему координат для вершин, что и для ребер).
Если вы можете предоставить немного больше контекста в своем вопросе о том, как вы на самом деле вызываете draw*Line(), и как это отличается от того, как это делает JUNG, вероятно, будет проще определить, что именно нужно исправить.