2016-06-15 74 views
0

背景我是新來GWT,我的搜索查詢不轉了一下我在尋找,但我怕我沒有措辭他們正確,所以我很抱歉,如果這是一個簡單/重複的問題。添加clickHandler事件的FlowPanel的用法在GWT

我目前正在嘗試弄清楚如何將ClickHandler添加到未被特定Widget佔用的FlowPanel區域。我知道我可以簡單地通過在FocusPanel內部包裝整個FlowPanel來添加一個ClickHandler,但是當點擊流面板中的任何小部件時會觸發。這些小部件通常是具有複雜結構的複合小部件。

我的最終目標,這裏是處理當用戶單擊空白處點擊,但允許個別小部件都有自己獨特的單擊處理程序,如果在一個特定的插件的用戶點擊。

有什麼建議嗎?

謝謝!

+0

除非需要重點關注,否則不需要在FocusPanel中包裝FlowPanel。你可以簡單地使用'myFlowPanel.addDomHandler(myClickHandler,ClickEvent.getType())'。 –

回答

0

你有兩種選擇。 (A)將相同的點擊處理程序添加到所有窗口小部件,然後在onClick內部執行基於哪個窗口小部件是點擊源的不同操作。

(B)獲取鼠標位置(從ClickEvent),然後通過子部件循環,看看這款鼠標的位置落在裏面其中的一個。

+0

有趣,謝謝。我沒有到達保持小部件列表的相似,但略有不同的解決方案,然後做'event.getNativeEvent()。getEventTarget()',然後通過'getElement檢查每個小部件的()。isOrHasChild(targetElement)'。這與您的選項(B)類似,但使用元素層次而不是直接定位。一種方法可能比另一種方法更受歡迎是否有理由? – Bryan