如何将catch/forward MouseWheel 事件传递给多个对象?
How to catch/forward MouseWheel event to several objects?
我正在使用 yFiles library and I am handling a Graph2DView object named view
. To activate mouseWheel scroll for this object, I have to add a listener in registerViewListeners 函数。但是,我也想在 mouseweel
时在 myClass 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 ...
}
}
问题:
如果我通过 registerViewListeners
注册我的 view
对象
@Override
protected void registerViewListeners()
{
Graph2DViewMouseWheelScrollListener wheelListener = new Graph2DViewMouseWheelScrollListener();
wheelListener.addToCanvas(view);
}
我的 mouseWheelMoved
函数不再收到通知:
@Override
public void mouseWheelMoved(MouseWheelEvent e)
{
// not called
}
根据您的描述,您似乎只是删除了事件侦听器的注册。
在你实例化的地方MyClass
,请同时加上:
view.getCanvasComponent().addMouseWheelListener(myClassInstance); // register listener
如果你不注册你的监听器,它当然不会被调用。仅实例化它是不够的。
我正在使用 yFiles library and I am handling a Graph2DView object named view
. To activate mouseWheel scroll for this object, I have to add a listener in registerViewListeners 函数。但是,我也想在 mouseweel
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 ...
}
}
问题:
如果我通过 registerViewListeners
view
对象
@Override
protected void registerViewListeners()
{
Graph2DViewMouseWheelScrollListener wheelListener = new Graph2DViewMouseWheelScrollListener();
wheelListener.addToCanvas(view);
}
我的 mouseWheelMoved
函数不再收到通知:
@Override
public void mouseWheelMoved(MouseWheelEvent e)
{
// not called
}
根据您的描述,您似乎只是删除了事件侦听器的注册。
在你实例化的地方MyClass
,请同时加上:
view.getCanvasComponent().addMouseWheelListener(myClassInstance); // register listener
如果你不注册你的监听器,它当然不会被调用。仅实例化它是不够的。