2012-02-22 13 views
2

gwtの水平パネルにマウスイベントをキャプチャする方法はありますか? mousedownまたはonclickイベントをキャプチャしようとしていますが、動作させることができません。これは私がこれまで行ってきたことです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());*/ 
     } 

    }; 

私はこれがなぜ機能しないのか分かりません。 ご協力いただければ幸いです。

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

答えて

7

代わりに、手動でイベントをシンクすると読んで、あなたはWidget#addDomHandler()の使用を検討できます。例:

HorizontalPanel yourContainer = new HorizontalPanel(); 

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

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

ありがとうございました...宝石のように機能しました。 – ravi

+0

@Danny Kirchmeier面白いです。例えばFlowPanelでも動作しますか? addDomHandler()の代わりにaddHandler(...)を試し、フローパネルがマウスイベントをサポートしていなかったので、addHandler()とaddDomHandler()の違いはありますか?コメントしてください – user592704

+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

0

あなたはFocusPanelを使用することができます。 おかげ

関連する問題