0

我正在使用yFiles库,并且正在处理一个名为view. 要为此对象激活 mouseWheel 滚动,我必须在registerViewListeners函数中添加一个侦听器。mouseWheelMoved但是,当 mouseweel 时,我也希望在 myClass 函数中得到通知

public class MyClass extends MyBaseClass implements MouseWheelListener {
    
    Graph2DView view;  
    // ..... 

    @Override
    protected void registerViewListeners()   
    {  
         Graph2DViewMouseWheelScrollListener wheelListener = new Graph2DViewMouseWheelScrollListener();
         wheelListener.addToCanvas(view);
    
         // The two precedent instruction is equivalent to 
         // view.getCanvasComponent().addMouseWheelListener(this);
    }

    @Override
    public void mouseWheelMoved(MouseWheelEvent e) 
    {    
        // some work ...
    }  
}  

问题
如果我通过以下方式注册我的view对象registerViewListeners

 @Override
 protected void registerViewListeners()   
 {  
    Graph2DViewMouseWheelScrollListener wheelListener = new Graph2DViewMouseWheelScrollListener();
    wheelListener.addToCanvas(view);
 }

我的mouseWheelMoved功能不再收到通知:

@Override
public void mouseWheelMoved(MouseWheelEvent e) 
{    
    // not called
}  
4

1 回答 1

1

您的描述听起来好像您只是删除了事件侦听器的注册。

在您实例化的地方,MyClass还请添加:

 view.getCanvasComponent().addMouseWheelListener(myClassInstance); // register listener

如果你不注册你的监听器,它当然不会被调用。仅实例化它是不够的。

于 2020-11-26T17:02:17.553 回答