2009-11-30 20 views
0

我想知道BoxComponentEvent的哪个属性会告诉我,如果生成的OnMouseWheel事件是向上滚动或向下滚动事件。我输出了BoxComponentEvent公开的所有属性的值;并且所有这些(除了事件发生的坐标外)都保持不变。 Google和Ext-GWT文档对于提供一个具体的例子已经相当无用。正确处理Ext-GWT中的OnMouseWheel事件

public class MyPanel extends ContentPanel { 
    // ... 
    public MyPanel() { 
     addListener(Events.OnMouseWheel, new Listener<BoxComponentEvent>() { 
      public void handleEvent(BoxComponentEvent be) { 
       // What happens here to distinguish scroll-up and scroll-down? 
      } 
     }); 
    } 

    protected void afterRender() { 
     super.afterRender(); 
     el().addEventsSunk(Events.OnMouseWheel.getEventCode()); 
    } 
    // ... 
} 

回答

0

我测试了这一点,它的工作原理:

private int vpos = 0; 
public MyPanel() { 
     ContentPanel contents = new ContentPanel(); 
     contents.setHeight(500); 

     add(new Label("This is MyPanel")); 
     add(contents); 
     setHeight(300); 
     setScrollMode(Scroll.ALWAYS); 
     vpos = getVScrollPosition(); 

     addListener(Events.Scroll, new Listener<BaseEvent>(){ 

      @Override 
      public void handleEvent(BaseEvent be) { 

       int newVpos = getVScrollPosition(); 
       if(newVpos<vpos){ 
        Info.display("DEBUG", "UP!"); 
       } else if(newVpos>vpos){ 
        Info.display("DEBUG", "DOWN!"); 
       } 
       vpos = newVpos; 

      }}); 
    } 
+0

这只会告诉我,如果有一个滚轮事件,该轮事件没有方向这是我需要知道如何检索。 – 2009-12-03 20:07:59

+0

更新了我的答案,以包含适用于我的环境的解决方案。希望能帮助你。 – Upgradingdave 2009-12-03 21:29:34

+0

如果没有任何子组件超过父容器的大小(这与我正在处理的情况相同),那么此解决方案将不起作用,并且它要求滚动条总是可见的(不是真正的问题,但不是真的美学上令人愉快)。 – 2010-01-21 19:25:14

1
be.getEvent().getMouseWheelVelocityY() 
相关问题