Events 如何将密钥处理程序添加到GWT FlexTable?

Events 如何将密钥处理程序添加到GWT FlexTable?,events,gwt,Events,Gwt,我正在尝试使用KeyCodes.KEY\u UP/DOWN更改FlexTable中的行高亮显示。这似乎不起作用(基于): 我也尝试过这个(基于): 我在寻找一种或多或少都能做到的方法。在GWT中有人有办法做到这一点吗?明白了吗 FocusPanel focus = new FocusPanel(flexTable); focus.addKeyDownHandler(new KeyDownHandler() { @Override public void onKeyDo

我正在尝试使用KeyCodes.KEY\u UP/DOWN更改FlexTable中的行高亮显示。这似乎不起作用(基于):

我也尝试过这个(基于):

我在寻找一种或多或少都能做到的方法。在GWT中有人有办法做到这一点吗?

明白了吗

  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");
        }
     }
  });
明白了


你能看到事件是否被捕捉到吗?我想这也是问题的一部分。我需要获取一个事件才能到达我的FlexTable。您是否能够看到该事件是否被捕获?我想这也是问题的一部分。我需要获取一个事件才能到达FlexTable。另外,添加event.preventDefault()可帮助我吞下此事件,以便浏览器不会尝试滚动。另外,添加event.preventDefault()可帮助我吞下此事件,以便浏览器不会尝试滚动。
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);
  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");
        }
     }
  });