GWT树小部件吞下箭头键盘事件,使TreeItems中包含的TextBox不响应箭头键

时间:2009-11-20 14:58:03

标签: gwt

在GWT 1.6.4中轻松重现:

Tree tree = new Tree();
tree.addItem(new TextBox());

问题在于树中的onBrowserEvent:

switch (eventType) {
  case Event.ONKEYDOWN:
  case Event.ONKEYUP: {
    if (isArrowKey(DOM.eventGetKeyCode(event))) {
      DOM.eventCancelBubble(event, true);
      DOM.eventPreventDefault(event);
      return;
    }
  }

与许多GWT小部件一样,它们并不能很好地进行子类化。我必须有一个简单的技巧吗?

1 个答案:

答案 0 :(得分:6)

解决了这个问题。

    m_tree = new Tree()
    {
        @Override
        protected boolean isKeyboardNavigationEnabled(TreeItem inCurrentItem)
        {
            return false;
        }

        @Override
        public void onBrowserEvent(Event event) {
            int eventType = DOM.eventGetType(event);

            switch (eventType)
            {
                case Event.ONKEYDOWN:
                case Event.ONKEYPRESS:
                case Event.ONKEYUP:
                    return;
                default:
                    break;
            }

            super.onBrowserEvent(event);
        }
    };