Я хочу отменить событие для следующих обработчиков. Пример класса ниже показывает, что я пытаюсь. Несмотря на то, что keyevent отменяется для текстового поля, второй обработчик все еще вызывается. порядок обработчиков правильный. я могу доказать, что Handler1 вызывается перед Handler2. в этом примере класса я мог бы использовать флаг, но в моем реальном классе обработчики и текстовое поле разделены, поэтому флаги будут проблемой. есть идеи?
public class EventTestTextBox extends TextBox {
public static class Handler1 implements KeyUpHandler {
@Override
public void onKeyUp(KeyUpEvent event) {
if (event.isShiftKeyDown()) {
event.preventDefault();
event.stopPropagation();
((TextBox)event.getSource()).cancelKey();
}
}
}
public static class Handler2 implements KeyUpHandler {
@Override
public void onKeyUp(KeyUpEvent event) {
Window.alert("should not appear if shift-key is down.");
}
}
public EventTestTextBox() {
super.addKeyUpHandler(new Handler1());
super.addKeyUpHandler(new Handler2());
}
}