Question

J'ai l'extrait de code suivant, changeTextArea est un objet 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
  }
}

Comment pourrais-je empêcher l’événement qui provoque l’appel de cette méthode de remonter de changeTextArea dans les panneaux / Widgets / Composites / Tout ce qui contient changeTextArea. En bref, comment puis-je l'empêcher de bouillonner davantage. Toute aide serait la bienvenue (en particulier des exemples de code).

Était-ce utile?

La solution

Autant que je sache, vous ne pouvez pas le faire via un écouteur clavier, mais il est possible d'ajouter un aperçu de l'événement à l'aide de la classe DOM:

DOM.addEventPreview(EventPreview preview) 

Ensuite, lorsque vous obtenez l'événement:

onEventPreview(Event event) 

Vous devez renvoyer false pour indiquer que vous souhaitez annuler l'événement. L'objet Event prend également en charge cette méthode:

public final void cancelBubble(boolean cancel)

Annule la formation de bulles pour l'événement donné. Cela empêchera la propagation de l'événement aux éléments parents.

Vous pouvez trouver plus de détails ici: http: // google-web-toolkit .googlecode.com / svn / javadoc / 1.5 / index.html? overview-summary.html

Autres conseils

Vous pouvez certainement utiliser les méthodes cancelBubble () et preventDefault () de l'événement à partir de tout code ayant accès à l'événement. Il n'est pas nécessaire d'avoir un aperçu de l'événement ...

Vous pouvez appeler l'événement cancelKey () de l'expéditeur. Voici un exemple qui permet uniquement la saisie de nombres. Toutes les autres clés sont rejetées.

La classe privée RowColChangeHandler implémente KeyPressHandler     {

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

vous pouvez y accéder lorsque cela est possible en faisant event.doit = ??false

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top