2010-06-17 3 views
0

Я пытаюсь изменить выделение строк в своем FlexTable с помощью KeyCodes.KEY_UP/DOWN. Это не похоже на работу (на основе 1809155):Как добавить ключевой обработчик в GWT FlexTable?

public class KeyAwareFlexTable extends FlexTable 
     implements KeyDownHandler, HasKeyDownHandlers { 
    public KeyAwareFlexTable() { 
     this.addKeyDownHandler(this); 
    } 

    @Override 
    public void onKeyDown(KeyDownEvent event) { 
     GWT.log("onKeyDown"); 
     // check if up/down & do something useful 
    } 

    @Override 
    public HandlerRegistration addKeyDownHandler(KeyDownHandler handler) { 
     return addDomHandler(handler, KeyDownEvent.getType()); 
    } 
} 

Я также попытался это (на основе this site):

FlexTable table = new FlexTable() { 
    @Override 
    public void onBrowserEvent(Event event) { 
    super.onBrowserEvent(event); 
    GWT.log("Event type = " + DOM.eventGetType(event)); 
    switch (DOM.eventGetType(event)) { 
    case Event.ONKEYDOWN: 
     if (DOM.eventGetKeyCode(event) == KeyCodes.KEY_UP) { 
      GWT.log("up"); 
     } else if (DOM.eventGetKeyCode(event) == KeyCodes.KEY_DOWN) { 
      GWT.log("down"); 
     } 
     break; 
    default: 
     break; 
    } 
    } 
}; 
table.sinkEvents(Event.ONKEYDOWN); 

Я ищу способ, чтобы иметь больше this behavior или менее. У кого-нибудь есть способ сделать это в GWT?

+0

в состоянии увидеть, если событие становится захвачена на все ли вы? –

+0

Я думаю, что это тоже проблема. Мне нужно получить событие, чтобы достичь моего FlexTable. –

ответ

3

Понял

FocusPanel focus = new FocusPanel(flexTable); 
    focus.addKeyDownHandler(new KeyDownHandler() { 
    @Override 
    public void onKeyDown(KeyDownEvent event) { 
     int code = event.getNativeKeyCode(); 
     if (KeyCodes.KEY_UP == code) { 
      GWT.log("Bed goes up"); 
     } else if (KeyCodes.KEY_DOWN == code) { 
      GWT.log("Bed goes down"); 
     } 
    } 
    }); 
+0

Кроме того, добавление event.preventDefault() помогает мне проглотить это событие, чтобы браузер не просканировал. –

Смежные вопросы