2012-04-18 3 views
0

시각화 툴킷 Zest를 사용하여 그래프를 만들고 있습니다. 먼저 그래프를 작성한 다음 노드를 추가합니다. 이 노드에 마우스 더블 클릭 이벤트를 추가하고 싶습니다. 다음 코드를 시도했지만 작동하지 않습니다. 확인 e.button == 3 때문입니까? AddListener 내에 새 리스너 추가

[...] 
Graph graph = new Graph(parent, SWT.BORDER); 

graph.addListener(SWT.MouseDown, new Listener() { 
    public void handleEvent(Event e) { 
     if (e.button == 3) { 

      Menu menu = new Menu(parent); 
      final MenuItem a1 = new MenuItem(menu, SWT.None); 
      a1.setText("New Node"); 
      a1.addSelectionListener(new SelectionListener() { 
           @Override 
       public void widgetSelected(SelectionEvent e) { 
            GraphNode graphNode = new GraphNode(graph, SWT.NONE); 
            graphNode.addListener(SWT.MouseDoubleClick, new Listener 
             (
              @Override 
         public void handleEvent(Event event) { 
               System.out.println("node created");}); 

       @Override 
       public void widgetDefaultSelected(SelectionEvent e) {} 
        } 
      } 
}); 

답변

0

이 지정되지 않은 Listener 대신 MouseAdapter를 사용해보십시오 감사합니다. 그리고 mouseDoubleClick(MouseEvent e) 메서드를 재정의하십시오.

upd. 대한

graph.addMouseListener(new MouseListener(){ 

    @Override 
    public void mouseDoubleClick(MouseEvent arg0) 
    { 
      // TODO Auto-generated method stub 
    } 
    ... 
} 
+0

내가 이것을 사용하여 시도, 나는이 메시지했다 방법 : 유형의 위젯에 메소드의 addListener (INT, 리스너) 인수 (INT, 새 MouseAdapter() {}) – user1338839

+0

적용 할 수 없습니다 패키지에있는 것 : org.eclipse.draw2d.MouseListener? 그것은 내 GraphNode를 Ifigure에 던지라고 요청합니다 !! 이전에 시도했지만 더 이상 노드를 드래그 할 수 없습니다. 나는 다음과 같은 방법을 무시하기 때문에 : - 공공 무효 mouseDoubleClicked (org.eclipse.draw2d.MouseEvent의 것들은 arg0) {} - 공공 무효의 mousePressed (org.eclipse.draw2d.MouseEvent는 arg0) {} - 공개 void mouseReleased (org.eclipse.draw2d.MouseEvent arg0) {} – user1338839

+0

알렉스는 swt MouseAdapter 클래스를 의미한다고 생각합니다. –

관련 문제