2015-01-05 8 views
0

Я делаю проект в JUNG. Я хочу добавить событие мыши, которое будет вызываться, когда пользователь переместит узел или вершину. Я пытался несколько слушателей, как, ItemListener, GraphMouseListener ..JUNG Моделирование

Я попытался это, п некоторые подобные коды:

  vv.addGraphMouseListener(new GraphMouseListener() { 

      @Override 
      public void graphClicked(Object v, MouseEvent me) { 
       throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
      } 

      @Override 
      public void graphPressed(Object v, MouseEvent me) { 
       throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. 
      } 

      @Override 
      public void graphReleased(Object v, MouseEvent me) { 

      Object subject = me.getSource(); 
       // The graph uses Integers for vertices. 
       if (subject instanceof VertexFactory) { 
        VertexFactory vertex = (VertexFactory) subject; 
        if (pickedState.isPicked(vertex)) { 
//      selectedNode = vertex; 
         System.out.println("Vertex " + vertex 
           + " is now selected"); 
         re.calDistance(bs.get(0)); 
         dest(); 
         vv.repaint(); 
         vv.updateUI(); 

        } 
       } 
      } 
     }); 

ответ

1

Я хотел бы предложить расширить PickingGraphMousePlugin и добавив его в GraphMouse

http://jung.sourceforge.net/doc/api/edu/uci/ics/jung/visualization/control/PickingGraphMousePlugin.html

public class MovingGraphMousePlugin<V, E> extends PickingGraphMousePlugin<V, E> { 

    @Override 
    public void mousePressed(MouseEvent e) { 
     super.mousePressed(e); 
     if(vertex != null) { 
      System.out.println(vertex + " was picked."); 
     } 
    } 
} 

, а затем, например:

DefaultModalGraphMouse graphMouse = new DefaultModalGraphMouse(); 
graphMouse.add(new MovingGraphMousePlugin<V, E>()); 
visualViewer.setGraphMouse(graphMouse); 

Это всего лишь примерный пример и расскажет только, что выбрана вершина. Если вы хотите напечатать, если перемещена вершина, вам придется переопределить метод mouseReleased. Вам тогда придется сравнивать две точки, где была нажата мышь, и где она была выпущена (e.getPoint()).

+0

Благодарим вас за ответ. это помогло и решило мою проблему. :-) –

 Смежные вопросы

  • Нет связанных вопросов^_^