2009-11-27 4 views
2

Как вы добавляете прослушиватель событий или обработчик к виджетам в GWT 1.7?Mouse Over прослушиватель для FlexTable в GWT 1.7?

Я знаю, что есть какие-то вопросы об этом на SO, но, похоже, они устарели. Например (игнорируя тот факт, что в CSS существует: наведите указатель мыши), как, например, добавить слушателя Hover в 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

+0

Также это показывает, как реализовать это .. но я не могу показаться для того, чтобы передать событие в вызывающий, который сгенерировал его: (Ярлык) event.getEventTarget() не работает! http://code.google.com/webtoolkit/articles/dom_events_memory_leaks_and_you.html – drozzy

+0

Что касается реализации этого в FlexTable, FlexTable не реализует эти интерфейсы. В примере, к которому вы ссылаетесь, они расширяют FlexTable как таблицу, а затем добавляют обработчики в таблицу. Вы могли бы что-то подобное или perphaps просто обернуть FlexTable другим виджетами, который реализует HasMouseOverHandler, например FocusPanel. Что касается того, как найти цель события, в MouseOverEvent отсутствует метод getEventTarget. Целью вентиляционного отверстия является, конечно же, виджет, который реализует MouseOverHandler. – Joel