Остановить событие от пузырей в GWT - PullRequest
5 голосов
/ 18 октября 2008

У меня есть следующий фрагмент кода, 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 в Панели / Виджеты / Композиты / Все, что содержит changeTextArea. Говоря кратко, как я могу остановить его дальше пузыриться. Буду признателен за любую помощь (особенно примеры кода).

Ответы [ 4 ]

6 голосов
/ 18 октября 2008

Насколько я знаю, вы не можете сделать это через прослушиватель клавиатуры, но это возможно, добавив предварительный просмотр события с использованием класса 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

4 голосов
/ 20 октября 2008

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

2 голосов
/ 22 декабря 2010

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

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

    public void onKeyPress(KeyPressEvent event) {
        char keyCode = event.getCharCode();
        if(keyCode <48 || keyCode >57)
        {
            ((TextArea)event.getSource()).cancelKey();
        }
    }
}
0 голосов
/ 28 июля 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...