2009-11-27 78 views
2

如何在GWT 1.7中爲事件添加事件監聽器或處理程序?鼠標懸停在GWT 1.7 FlexTable的監聽器?

我知道這裏有一些關於這方面的問題,但看起來他們已經過時了。 例如(忽略CSS中存在懸停的事實)例如,如何向FlexTable添加懸停監聽器?

回答

1

如果你想一個MouseOverHandler添加到FlexTable試試這個:

public class MyFlexTable extends FlexTable implements MouseOverHandler, HasMouseOverHandler { 
    public MyFlexTable() { 
     this.addMouseOverHandler(this); 
    } 

    public void onMouseOver(MouseOverEvent event) { 
     //do something 
    } 
    public HandlerRegistration addMouseOverHandler(MouseOverHandler handler) { 
     return addDomHandler(handler, MouseOverEvent.getType()); 
    } 
} 
0

從GWT 1.6開始,您使用Handlers而不是Listeners。例如,爲了懸停,您需要添加一個MouseOverHandler和MouseOutHandler。 FlexTable本身並沒有實現這些接口,因此您可能想要在FlexTable中包含的小部件上實現它。例如,

myWidget.addMouseOverHandler(new MouseOverHandler(){ 
    void onMouseOver(MouseOverEvent event){ 
     doHovering(); 
    } 
}); 

類似地,用於添加MouseOutHandler。

+0

你知道我怎麼能搞定的FlexTable?我發現這個鏈接,但我真的不明白它是如何工作的:http://www.java2s.com/Code/Java/GWT/TableMouseOverEvent.htm – drozzy 2009-11-27 19:20:44

+0

此外,這顯示瞭如何實現這..但我無法將事件投射到生成它的elent:(Label)event.getEventTarget()不起作用! http://code.google.com/webtoolkit/articles/dom_events_memory_leaks_and_you.html – drozzy 2009-11-27 19:47:01

+0

至於在FlexTable上實現此功能,FlexTable不實現這些接口。在您鏈接到的示例中,他們將FlexTable擴展爲Table,然後將處理程序添加到Table中。您可以使用類似的或perphaps將FlexTable與另一個實現HasMouseOverHandler的小部件(例如FocusPanel)進行包裝。至於如何查找事件的目標,MouseOverEvent上沒有getEventTarget方法。發泄目標當然是實現MouseOverHandler的小部件。 – Joel 2009-11-27 22:44:46