2012-02-22 70 views
2

有沒有方法在gwt的水平面板上捕捉鼠標事件? 我正在嘗試捕獲mousedown或onclick事件,但m無法讓它工作。這是我迄今爲止在GWT的水平面板上捕捉鼠標事件

final HorizontalPanel container = new HorizontalPanel() { 
     @Override 
     public void sinkEvents(int eventBitsToAdd) { 
      // TODO Auto-generated method stub 
      super.sinkEvents(Event.ONCLICK); 
     } 

     @Override 
     public void onBrowserEvent(final Event event) { 
      // TODO Auto-generated method stub 
      super.onBrowserEvent(event); 
      if (DOM.eventGetType(event) == Event.ONCLICK) { 
        System.out.println("event type -->> " + event.getType()); 
      } 
      /*if(Event.ONMOUSEDOWN == arg0.getTypeInt()) 
      System.out.println("event type -->> " + arg0.getType());*/ 
     } 

    }; 

我不知道爲什麼,這並不工作完成。 任何幫助,將不勝感激。 感謝

回答

7

不用手動下沉和閱讀活動,你可以考慮使用Widget#addDomHandler()

HorizontalPanel container = new HorizontalPanel(); 
ClickHandler cHandler = new ClickHandler(){ /* ... */ }; 
MouseDownHandler mdHandler = new MouseDownHandler(){ /* ... */ }; 
container.addDomHandler(cHandler, ClickEvent.getType()); 
container.addDomHandler(mdHandler, MouseDownEvent.getType()); 
+0

非常感謝...像寶石一樣工作。 – ravi 2012-02-23 15:01:43

+0

@Danny Kirchmeier很有意思。例如,它是否也適用於FlowPanel?在我嘗試addHandler(...)而不是addDomHandler()之前,我的流程面板不支持鼠標事件,所以addHandler()和addDomHandler()之間有區別嗎?意見請 – user592704 2013-01-22 17:02:31

+0

我的意思是addHandler()爲http://google-web-toolkit.googlecode.com/svn/javadoc/2.2/com/google/gwt/user/client/ui/Widget.html#addHandler%28H, %20com.google.gwt.event.shared.GwtEvent.Type%29 – user592704 2013-01-22 17:08:58

0

您可以使用FocusPanel。例如:

HorizontalPanel yourContainer = new HorizontalPanel(); 

FocusPanel wrapper = new FocusPanel(); 
wrapper.add(yourContainer); 

wrapper.addClickHandler(new ClickHandler() { 
    @Override 
    public void onClick(ClickEvent event) { 
    // Handle the click 
    } 
});