2012-04-18 68 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(INT,監聽器)是不適用的參數(INT,新MouseAdapter(){}) – user1338839 2012-04-18 12:00:31

+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 2012-04-18 13:01:51

+0

我想,Alex的意思是swt MouseAdapter類。 – 2012-06-09 11:14:59