2012-04-18 15 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

私はこれを使用して試みたが、私はこのメッセージを持っていた:ウィジェットを引数に適用されないタイプ(INT、新しいMouseAdapterの(){}) – user1338839

+0

で 方法のaddListener(INT、リスナー)パッケージ内のもの: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

私はAlexがswt MouseAdapterクラスを意味すると思います。 –

関連する問題