2009-11-30 4 views
0

J'essaie de déterminer quelle propriété de BoxComponentEvent me dira si l'événement OnMouseWheel généré était un événement de défilement vers le haut ou vers le bas. J'ai sorti les valeurs de toutes les propriétés exposées par BoxComponentEvent; et tous (à l'exception des coordonnées à laquelle l'événement a eu lieu) restent les mêmes indépendamment. Google et les doc Ext-GWT ont été plutôt inutiles pour fournir un exemple concret.Gestion correcte des événements OnMouseWheel dans Ext-GWT

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()); 
    } 
    // ... 
} 

Répondre

0

J'ai testé cela et il fonctionne:

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

Cela ne fera que me dire s'il y avait un événement de roue, pas la direction de l'événement de roue qui est ce que je dois savoir comment à récupérer. –

+0

Mise à jour de ma réponse pour inclure une solution qui fonctionne dans mon environnement. J'espère que cela vous aidera. – Upgradingdave

+0

Cette solution ne fonctionnera pas si aucun des composants enfants ne dépasse la taille du conteneur parent (ce qui est le cas avec ce sur quoi je travaille) et cela nécessite que les barres de défilement soient toujours visibles (pas vraiment un problème mais pas vraiment que esthétiquement agréable non plus). –

1
be.getEvent().getMouseWheelVelocityY()