如何捕捉/转发鼠标滚轮事件到多个对象?

huus2vyu  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(811)

我正在使用yfiles库,并处理一个名为 view . 要为此对象激活鼠标滚轮滚动,我必须在registerviewlisteners函数中添加一个侦听器。不过,我也想在我的课堂上得到通知 mouseWheelMoved 鼠标移动时的功能

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
}

bybem2ql

bybem2ql1#

您的描述听起来好像您只是删除了事件侦听器的注册。
在你示例化的地方 MyClass ,请同时添加:

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

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

相关问题