Как заставить Jung2 перемещать узел сверху, когда пользователь выбирает один из кучи?

Я создал настольное приложение на основе примера, поставляемого с Jung2, который отображает графики на фрейме. Приложение позволяет пользователю перемещать выбранные узлы с помощью класса EditingModalGraphMouse.

Однако, когда пользователь щелкает и перетаскивает узел из области, где много узлов расположены друг над другом, приложение фактически выбирает узел в нижней части стопки (который не виден), а не выбирает узел наверху. (который виден пользователю).

Я пытаюсь копаться в классах, чтобы проверить, где на самом деле выполняется выбор узла, но я немного запутался. Я думаю, что действие происходит в методе PickingGraphMousePlugin.mousePressed(...) с объектом pickSupport, возвращаемым vv.getPickSupport().

У меня такой вопрос: Как заставить приложение перемещать узел вверх, когда пользователь выбирает узел из кучи? И какие классы отвечают за управление этим?

Я использую Jung версии 2.0.1.


person Ricardo    schedule 01.07.2014    source источник


Ответы (1)


Чтобы ответить на мой собственный вопрос, нужно просто использовать ShapePickSupport.Style.HIGHEST, как в приведенном ниже коде (параметры generics были изменены для ясности):

VisualizationViewer<V, E> vv = new VisualizationViewer<V, E>(visualizationModel, preferredSize);
...
ShapePickSupport pickSupport = (ShapePickSupport) vv.getPickSupport();
pickSupport.setStyle(ShapePickSupport.Style.HIGHEST);

Кроме того, вот полезный ресурс, связанный с этим вопросом:

person Ricardo    schedule 01.07.2014