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

Попробуйте использовать MouseAdapter вместо нетипизированного Listener. И переопределите его метод mouseDoubleClick(MouseEvent e).

upd. как насчет

graph.addMouseListener(new MouseListener(){ 

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

Я попытался с помощью этого, и у меня было такое сообщение: метод AddListener (интермедиат, Listener) в тип виджета не применяется для аргументов (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. –

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