[英]gwt: How to use setEventListener?
我有以下代碼:
DOM.setEventListener(row.getElement(), new ClickListener(){
@Override
public void onClick(Widget sender) {
// TODO Auto-generated method stub
}});
我認為代碼不錯,並且ClickListener
擴展了EventListener
,但它給出了錯誤提示: The method setEventListener(Element, EventListener) in the type DOM is not applicable for the arguments (Element, new ClickListener(){})
真正的答案是您可能不會。 盡管可以將偵聽器附加到事件,但是您只能為每個元素附加一個偵聽器-偵聽然后獲取已配置的所有dom事件(請參閱DOM.sinkEvents
),並且您有責任確保在分離所有偵聽器之前該頁面將被卸載,否則某些瀏覽器將泄漏內存。
相反,強烈考慮使用小部件(和子類)來管理事件。 RootPanel是其他應添加到的基本窗口小部件,它將管理從頁面分離所有其他窗口小部件以防止內存泄漏。
此外,您還可以根據所關注事件的種類來聆聽其中發生的事件。 例如,即使在諸如Label之類的小部件上通常不會觸發鼠標懸停事件,您仍然可以附加處理程序並獲取通知:
Label label = new Label();
label.addDomHandler(new MouseOverHandler() {
@Override
public void onMouseOver(MouseOverEvent event) {
// do something
}
}, MouseOverEvent.getType());
RootPanel.get().add(label);
在大多數情況下,您將使用現有的支持方法,例如Button來獲取click事件-由於HasClickHandlers
接口,已經為您提供了便捷的方法:
Button button = new Button();
button.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
// do something
}
});
panel.add(button);
有關GWT,小部件和內存泄漏的更多信息:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.