当我点击某个面板时,我想要执行一个事件,就像当用户点击某个按钮时一样。
我需要这个来处理此面板的点击事件。
答案 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.
}
});