2010-09-12 7 views
0

Каков тип события для элемента управления, который следует щелкнуть в ячейке таблицы в приложении GWT? Я хочу в основном изменить цвет фона, когда пользователь выполнит это действие.Какое событие является нажатием клавиши управления в gwt

Эта часть моего кода в основном выглядит как:

public void onBrowserEvent(Event event) { 
     Element td = getEventTargetCell(event); 

     if (td == null) return; 
     Element tr = DOM.getParent(td); 

     System.out.println("Event " + Event.getCurrentEvent()); 
     switch (DOM.eventGetType(event)) { 
     case Event.ONMOUSEDOWN: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      onRowClick(tr); 
      break; 
     } 
     case Event.ONMOUSEUP: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffffff"); 
      break; 
     } 
     case Event.ONMOUSEOVER: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      onRowRollover(tr); 
      break; 
     } 
     case Event.ONMOUSEOUT: { 
      //DOM.setStyleAttribute(td, "backgroundColor","#ffffff"); 
      break; 
     } 
     /*case Event.ONCLICK: { 
      DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      break; 
     }*/ 
     case Event.ONDBLCLICK: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffffff"); 
      break; 
     } 
     case Event.KEYEVENTS: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      break; 
     } 
     case Event.ONFOCUS: { 
      //DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      break; 
     } 
     /*case Event. { 
      DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
      break; 
     }*/ 
     } 

    } 

Что мне нужно сделать, чтобы захватить это событие?

ответ

0

Как насчет обертывания содержимого ячейки в FocusPanel и добавления соответствующего обработчика (скорее всего, MouseDownHandler)? (tip: создайте обработчик один раз и добавьте его во все связанные ячейки).
Вы также можете добавить обработчики ключей и т. д. в FocusPanel, поэтому вам не нужно будет искать в собственных событиях браузера (что может привести к некоторым проблемам, браузеру -специфический код и т. д.), дайте GWT сделать это для вас :)

2

Объект http://google-web-toolkit.googlecode.com/svn/javadoc/2.0/com/google/gwt/user/client/Event.html, переданный в onBrowserEvent, имеет методы. Такие методы, как boolean getCtrlKey().

case Event.ONCLICK: { 
    if (event.getCtrlKey()) { 
     DOM.setStyleAttribute(td, "backgroundColor", "#ffce00"); 
    } 
    break; 
} 

Это будет работать в Windows, не уверенном в Mac и Linux. На OS X вы можете проверить getMetaKey(), потому что Command обычно используется там, где Control используется в Windows.