Frage

Ich habe folgende Code-Snippet haben, changeTextArea ist ein TextArea- Objekt.

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
  }
}

Wie würde ich das Ereignis stoppen, die diese Methode aus sprudelt aus changeTextArea in die Panels / Widgets / Composites / was auch immer, die changeTextArea enthalten aufgerufen werden verursacht. Setzen Sie kurz und bündig, wie kann ich verhindern, dass es sprudelt weiter. Jede mögliche Hilfe würde geschätzt (insbesondere Code-Beispiele).

War es hilfreich?

Lösung

Soweit ich weiß, Sie es über eine Tastatur Hörer nicht tun können, aber es ist möglich, durch eine Ereignisvorschau mit der DOM-Klasse hinzufügen:

DOM.addEventPreview(EventPreview preview) 

Wenn Sie dann das Ereignis bekommen:

onEventPreview(Event event) 

Sie sollten false zurück, sagen Sie das Ereignis abbrechen möchten. Das Event-Objekt unterstützt auch diese Methode:

public final void cancelBubble(boolean cancel)

Bricht für das gegebene Ereignis sprudeln. Dadurch wird das Ereignis stoppen zu übergeordneten Elementen propagieren.

Sie können mehr Informationen finden Sie hier: http: // google-web-Toolkit .googlecode.com / svn / javadoc / 1.5 / index.html? Übersicht-summary.html

Andere Tipps

Sie können auf jeden Fall die Veranstaltungs-cancelBubble () verwenden, und prevent () Methoden aus jedem Code, den Zugriff auf das Ereignis hat. Es gibt keine Notwendigkeit, eine Veranstaltung Vorschau haben ...

Sie können die CANCEL () Veranstaltung Absender anrufen. Hier ist ein Beispiel, das nur Zahlen können eingegeben werden, alle anderen Tasten abgelehnt bekommen.

private Klasse RowColChangeHandler implementiert KeyPressHandler     {

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

Sie können es erreichen, wenn möglich, indem Sie event.doit = false

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top