2011-06-29 21 views
0

我有一個Label在我的自定義FlowPanel實施HasDoubleClickHandlers如何在GWT中爲事件設置邊界?

final Label label = new Label("Click here to write"); 
    label.addClickHandler(new ClickHandler() { 
     @Override 
     public void onClick(ClickEvent event) { 
      clicked(); 
     } 
    }); 
    final CustomFlowPanel customFlowPanel=new CustomFlowPanel(); 
    customFlowPanel.addDoubleClickHandler(new DoubleClickHandler() { 
     @Override 
     public void onDoubleClick(DoubleClickEvent event) { 
      if (event.getSource() instanceof FlowPanel) { 
       doubleClicked(); 
      } 
     } 
    }); 
    custoFlowPanel.add(label); 

問題是當我雙擊標籤doubleClicked()不應該執行。 如何防止雙擊標籤時執行doubleClicked()? 在此先感謝!

回答

2

如果標籤被點擊,您可以檢查DoubleClickEvent,如果不是,則調用doubleClicked()。

customFlowPanel.addDoubleClickHandler(new DoubleClickHandler() {   
     @Override   
     public void onDoubleClick(DoubleClickEvent event) {    
      Element clicked = event.getNativeEvent(); 
      if (!clicked.Equals(label.getElement()) 
      { 
       doubleClicked();   
      } 
     }  
}); 
1

我還沒有嘗試過,但儘量在標籤上添加一個雙擊處理程序,並在其上使用 Event.stopPropagation()。這可以防止事件傳播給父級。