8
votes

Clickhandler sur un élément existant dans GWT

J'ai un document HTML. Dans ce document, il y a un élément (comme bouton comme, div, a) avec un identifiant. Je sais que je peux utiliser: xxx

pour trouver l'élément requis dans le fichier HTML. Comment puis-je ajouter un gestionnaire de clic à cela? Clickhandlers semble seulement être disponible sur la classe de boutons.

merci

gwt

2 commentaires

Deux options sont répertoriées ici: Stackoverflow.com/Questtions/2768961/...


Cela semble plutôt cher à mon goût. La solution ci-dessous est plus efficace. Merci d'avoir essayé d'aider!


4 Réponses :


17
votes

Si vous essayez d'ajouter un clickhandlerler à un , vous pouvez le faire avec < code> bouton.wrap () .

pour un yo peut utiliser anchor.wrap () ( Anchor S n'a que clicklistener s, pas clickhandler S ... encore)

pour un

Vous pouvez utiliser label.wrap () ( Label s ne sont que
s).

2 commentaires

Parfait! Vous avez été super utile. J'ai continué à essayer de faire comme un nouveau bouton (élément d'élément). Merci!


Vous pouvez également utiliser html.wrap () pour tout ce qui ne correspond pas à la touche / ancrage / étiquette grouper Jason mentionné.



4
votes

suggestion: Essayez d'apprendre à utiliser UIBINDER (ajouté dans GWT 2.0).

Dans votre cas, vous auriez pu faire: p>

YOURVIEW.UI.XML STRY> P>

public class yourView extends Composite {
    interface MyUiBinder extends UiBinder<LayoutPanel, yourView> {}
    private static MyUiBinder uiBinder = GWT.create(MyUiBinder.class);

    @UiField Button btnName;

    public yourView() {
        initWidget(uiBinder.createAndBindUi(this));
    }

    @UiHandler("btnName")
    void handleClick(ClickEvent e) {
        //Do whatever
    }
}


1 commentaires

Cela fonctionne si l'interface utilisateur est construite dans GWT, mais sa question posait de la question de l'ajout de gestionnaires de clic (et d'autres fonctionnalités de GWT) sur HTML existant sur la page. S'il construisait toute la page dans GWT, cependant, ce serait certainement la voie à suivre.



1
votes

Une autre suggestion - Utilisez GQuery. Il est facile de joindre un écouteur d'événement simple sur le DOM sans créer les éléments supplémentaires que les widgets GWT font souvent: xxx

voir ici pour plus: http://code.google.com/p/gwtquery/wiki/getingstarted#add_an_event_handler

Il est dommage qu'il n'y ait pas plus de code GWT basé sur une amélioration progressive. IMHO, CSS / HTML Faites un excellent travail au design / Markup - c'est juste le JavaScript que je veux remplacer.


0 commentaires

1
votes

Faites-le simplement en définissant un auditeur d'événement.

Event.sinkEvents(e, Event.ONCLICK);
Event.setEventListener(e, new EventListener() {
     @Override
     public void onBrowserEvent(Event event) {
          Window.alert("Clicked!");
     }
});


0 commentaires