单击GWT / MGWT中的Panel时要执行的事件

时间:2013-03-21 12:06:42

标签: gwt mgwt

当我点击某个面板时,我想要执行一个事件,就像当用户点击某个按钮时一样。

我需要这个来处理此面板的点击事件。

2 个答案:

答案 0 :(得分:6)

你必须使用GWT FocusPanel才能使其内容具有可聚焦性,并增加捕捉鼠标和键盘事件的能力。所以将panel包裹在FocusPanel内。

Panel panel = new Panel();    //Your panel here(ex;hPanel,vPanel)
FocusPanel focusPanel = new FocusPanel();

focusPanel.addClickListener(new ClickListener(){

    public void onClick(Widget sender) {
        // TODO Auto-generated method stub
    }

});

focusPanel.add(panel); 

另一种可能性(没有FocusPanel)

 HorizontalPanel hpanel = new HorizontalPanel();
        hpanel.sinkEvents(Event.CLICK);
        hpanel.addHandler(new ClickHandler() {

            @Override
            public void onClick(ClickEvent event) {
                // TODO Auto-generated method stub

            }
        }, ClickEvent.getType());

答案 1 :(得分:0)

我会创建一个新的小部件(在这个例子中扩展为Absolute面板),它实现了像这样的HasClickHandlers接口

public class MyCustomPanel extends AbsolutePanel
implements HasClickHandlers
{
    public HandlerRegistration addClickHandler(
        ClickHandler handler)
    {
        return addDomHandler(handler, ClickEvent.getType());
    }
}

然后在我的代码中,我会这样做

MyCustomPanel mPanel = new MyCustomPanel();
mPanel.addClickHandler(new ClickHandler() {
    public void onClick(ClickEvent event) {
        // Do on click stuff here.
    }
});