2013-03-21 27 views

回答

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()); 
+0

你給出的代碼不能正常工作。 – 2013-03-21 13:03:12

+0

你正在使用哪個面板?有任何異常?使用像這個focusPanel.add(面板);不是panel.add(focusPanel)。 – 2013-03-21 13:06:58

+0

請檢查更新後的答案。 – 2013-03-21 13:31:33

0

我想使一個新的微件(在本例中絕對面板延伸)實現這樣

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

的HasClickHandlers接口然後在我的代碼中,我會這樣做

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