Ceci est probablement une chose très simple, mais je ne sais pas comment implémenter ce qui suit. Je veux avoir ce qui est effectivement un absolutePanel qui peut accepter les événements de la souris. Cependant, dans l'objet Composite, je ne sais pas comment lier le gestionnaire que j'ai écrit (la chose onMouseDown()) avec la variable abs. Pour le dire succinctement, je veux que l'ABS AbsolutePanel réponde quand on clique dessus, mais AbsolutePanels n'accepte pas naturellement les événements de clic. Comment vais-je faire cela? Excuse à l'avance si c'est stupide simple, mais je ne sais pas comment implémenter ce comportement, et je ne l'ai pas vu mentionné dans les recherches que j'ai faites.Comment ajouter des gestionnaires d'événements à des panneaux composites dans GWT 1.6
Répondre
Dans ce cas, l'extension du Composite n'est probablement pas la meilleure idée sauf si vous bloquez délibérément l'accès à l'AbsolutePanel que vous créez dans le constructeur. Si vous étendez le AbsolutePanel vous serez en mesure de réutiliser le code pour ajouter/supprimer des widgets etc ..
Voilà comment je vous recommande de le faire:
package mods.client.resultSelector;
import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseDownHandler;
import com.google.gwt.event.dom.client.HasMouseDownHandlers;
import com.google.gwt.user.client.ui.AbsolutePanel;
public class MousyAbsolutePanel extends AbsolutePanel implements
MouseDownHandler,HasMouseDownHandlers {
public MousyAbsolutePanel(int width) {
System.out.println("MousyAbsolutePanel being created with width:" + width);
this.setWidth(String.valueOf(width));
this.setHeight("100%");
this.setStyleName("mousyAbsolutePanel");
this.addMouseDownHandler(this);
}
/**
* MouseDownHandler
*/
public void onMouseDown(MouseDownEvent event) {
System.out.println("onMouseDown()");
}
/**
* HasMouseDownHandlers - Code to add handlers to the panel
*/
public HandlerRegistration addMouseDownHandler(MouseDownHandler handler) {
return addDomHandler(handler, MouseDownEvent.getType());
}
}
Ensuite, vous pouvez accéder à la même MousyAbsolutePanel façon dont vous accédez à un AbsolutePanel, mais avec les gestionnaires d'événements supplémentaires, le style etc ..
La meilleure chose à faire pour apprendre comment/quoi faire est de regarder un exemple. Par exemple, la classe FocusWidget (qui implémente HasClickHandlers).
Plus précisément, regardez la méthode addClickHandler() et tracez-la.
Une fois que vous appelez initWidget(Widget)
, Composite
correctement proxy l'enregistrement de l'événement. Donc, vous pouvez simplement appeler MousyAbsolutePanel
hérité addDomHandler(...)
.
Voici un autre poste qui pourrait être utile:
Adding ClickHandler to div which contains many other widget
Appel sinkEvents(Event.ONCLICK)
, puis en ajoutant un ClickHandler
en utilisant seulement addHandler
fonctionnait très bien pour moi.
- 1. Comment ajouter dynamiquement des panneaux à d'autres panneaux lors de l'exécution en Java?
- 2. Problème CSS avec l'alignement des panneaux dans les panneaux
- 3. Postgres: Comment faire des clés composites?
- 4. Suppression des gestionnaires d'événements
- 5. Liaison de plusieurs gestionnaires à des éléments
- 6. Comment utiliser des éléments composites non-clés dans EJB3?
- 7. Meilleures pratiques en matière de conception de panneaux GWT
- 8. Ajouter un MouseOverHandler à un élément?
- 9. Énumération des gestionnaires d'événements
- 10. Mise à niveau de FPDF 1.53 à 1.6 - des problèmes?
- 11. GWT removeClickHandler
- 12. Panneaux coulissants activés par des liens
- 13. Différences dans l'affectation des gestionnaires d'événements C#?
- 14. Puis-je avoir des contraintes composites?
- 15. Partage de données entre des gestionnaires d'événements?
- 16. Arrêter un événement de bouillonnement dans GWT
- 17. comment ajouter des favicon à joomla?
- 18. Comment ajouter des enfants à un LegendItem?
- 19. Ajouter des commentaires à Makefile
- 20. Ajouter des QRadioButtons à l'exécution
- 21. Comment ajouter des champs personnalisés à InlineFormsets?
- 22. Comment stocker des données arbitraires dans un widget GWT?
- 23. Comment ajouter des projecteurs à une image
- 24. Comment ajouter des utilisateurs à sfguard
- 25. Comment puis-je implémenter des arguments d'activation dans GWT?
- 26. Ajouter des valeurs à web.config dans webservice
- 27. Comment associer des gestionnaires d'événements à des éléments générés à l'aide de la liaison de données dans WPF?
- 28. Déterminer la liste des gestionnaires d'événements liés à l'événement
- 29. Impossible d'ajouter des gestionnaires d'événements à ASP. net page
- 30. Unité de test des gestionnaires d'événements Flex