Comment ajouter des gestionnaires d'événements pour les panneaux composites en GWT 1.6
C'est probablement une chose très simple, mais je ne sais pas comment la mettre à la suite.
package mods.client.resultSelector;
import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseDownHandler;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Composite;
public class MousyAbsolutePanel extends Composite implements MouseDownHandler {
AbsolutePanel abs = new AbsolutePanel();
public MousyAbsolutePanel(int width){
System.out.println("MousyAbsolutePanel being created with width:" + width);
initWidget(abs);
abs.setWidth(String.valueOf(width));
abs.setHeight("100%");
abs.setStyleName("mousyAbsolutePanel");
}
public void onMouseDown(MouseDownEvent event) {
System.out.println("onMouseDown()");
}
}
Je veux avoir ce qui est effectivement un absolutePanel qui peut accepter les événements de la souris. Cependant, à l'intérieur de l'objet Composite je ne sais pas comment lier le gestionnaire j'ai écrit (le onMouseDown() chose) avec l'abs variable. Pour résumer, je veux de l'abs AbsolutePanel à répondre lorsqu'il est cliqué sur, mais AbsolutePanels ne sont pas naturellement accepter cliquez sur événements. Comment dois-je faire?
Excuses à l'avance si c'est stupide simple, mais je ne sais pas trop comment implémenter ce comportement, et je ne l'ai pas vu mentionné dans les recherches que j'ai fait.
OriginalL'auteur Stephen Cagle | 2009-05-06
Vous devez vous connecter pour publier un commentaire.
Dans ce cas, l'extension de la Composite est probablement pas la meilleure idée, sauf si vous êtes délibérément le blocage de l'accès à la AbsolutePanel vous créez dans le constructeur. Si vous étendez la AbsolutePanel vous serez en mesure de réutiliser le code à ajouter/supprimer des widgets etc..
Voici comment je vous recommande de le faire:
Ensuite, vous pouvez accéder à MousyAbsolutePanel de la même façon que vous accédez à une AbsolutePanel, mais avec les autres gestionnaires d'événements, de style etc..
OriginalL'auteur hannson
Voici un autre poste qui pourrait être utile:
L'ajout de ClickHandler à la div qui contient de nombreuses autres widget
Appel
sinkEvents(Event.ONCLICK)
puis en ajoutant uneClickHandler
en utilisant uniquementaddHandler
a très bien fonctionné pour moi.OriginalL'auteur Andrew
La meilleure chose à faire pour apprendre comment/quoi faire, c'est de regarder un exemple. E. g., le FocusWidget (de la classe qui implémente HasClickHandlers).
Plus précisément, le regard à la addClickHandler() la méthode, et de traces de à travers.
OriginalL'auteur jgindin
Une fois que vous appelez
initWidget(Widget)
,Composite
correctement le proxy de l'inscription à l'événement. Ainsi, vous pouvez simplement appelerMousyAbsolutePanel
'héritéaddDomHandler(...)
.OriginalL'auteur Fin Hopkins