在GWT中捕获水平面板上的鼠标事件

时间:2012-02-22 19:32:38

标签: gwt

有没有办法在gwt的水平面板上捕获鼠标事件? 我正在尝试捕获mousedown或onclick事件,但我无法让它工作。这就是我到目前为止所做的事情

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

    };

我不知道为什么这不起作用。 任何帮助,将不胜感激。 感谢

2 个答案:

答案 0 :(得分: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());

答案 1 :(得分: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
  }
});