Вопрос

У меня есть следующий фрагмент кода, changeTextArea - это объект TextArea.

changeTextArea.addKeyboardListener(new KeyboardListenerAdapter()
  public void onKeyPress( Widget sender, char keyCode, int modifier){
    //do something
    //I WISH TO STOP THE EVENT THAT MAPS TO THIS KEYPRESS FROM BUBBLING ANY FURTHER
  }
}

Как бы я остановил событие, которое вызывает вызов этого метода из-за того, что он всплывает из changeTextArea в Panels / Widgets / Composites / Независимо от того, что содержит changeTextArea.Короче говоря, как мне остановить дальнейшее бурление?Буду признателен за любую помощь (особенно за примеры кода).

Это было полезно?

Решение

Насколько я знаю, вы не можете сделать это через прослушиватель клавиатуры, но это возможно, добавив предварительный просмотр события с помощью класса DOM:

DOM.addEventPreview(EventPreview preview) 

Затем, когда вы получите событие:

onEventPreview(Event event) 

Вы должны вернуть false, чтобы сказать, что хотите отменить событие. Объект Event также поддерживает этот метод:

public final void cancelBubble(boolean cancel)

Отменяет всплытие для данного события. Это остановит распространение события на родительские элементы.

Вы можете найти более подробную информацию здесь: http: // google-web-toolkit .googlecode.com / СВН / Javadoc / 1.5 / index.html? Обзор-summary.html

Другие советы

Вы, безусловно, можете использовать методы cancelBubble () и protectDefault () события из любого кода, который имеет доступ к событию. Предварительный просмотр события не требуется ...

Вы можете вызвать событие cancelKey () отправителя. Вот пример, который будет позволять вводить только цифры, все остальные ключи будут отклонены.

закрытый класс RowColChangeHandler реализует KeyPressHandler     {

    public void onKeyPress(KeyPressEvent event) {
        char keyCode = event.getCharCode();
        if(keyCode <48 || keyCode >57)
        {
            ((TextArea)event.getSource()).cancelKey();
        }
    }
}

вы могли бы достичь этого, когда это возможно, выполнив event.doit = false

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top