Je suis incapable de comprendre comment puis-je ajouter un événement de double clic à la cellule de la cellule. P>
est-il possible avec une cellule GWT ou non? P>
Y a-t-il une solution de contournement p>
merci .. p>
al p>
BTW, j'ai vu ce post mais il n'y a pas de réponse ... http://www.devcomments.com/adding-doubleclicks -et-oncontextmenu-to-celltable-at1066168.htm P>
7 Réponses :
Si vous vouliez une cellule de texte qui vous permet de prendre en charge votre propre liste d'événements choisis, vous pouvez utiliser ceci: puis vous l'instanciez: p> puis remplace la méthode OnBrowReevent () pour traiter vos événements. P> P>
J'ai fabriqué quelque chose de différent qui correspond à mes besoins:
Une vérification de type événement plus élégante peut être effectuée au lieu de événement.getNatifEvent (). GetType (). Contient ("Cliquez sur") CODE>. Essayez
événement.gettypeint (event.getNatifEvent (). GetType ()) == event.onclick code>, substituant
event.onclick code> avec dénombrement correspondant à l'événement souhaité (testé avec GWT 2.4).
Cela ne prend pas en charge les événements de simples clics en parallèle = (
@Superkakes Vous avez raison, mais si vous utilisez une solution Boris, vous pourrez discriminer la single et double clic. Si vous souhaitez toujours utiliser ma solution, vous pouvez faire la discrimination simple et double-cliquer dans le test .Contains ("Cliquez sur") Test. Je n'ai pas essayé tu.
cellTable.addDomHandler(new DoubleClickHandler() { @Override public void onDoubleClick(DoubleClickEvent event) { Window.alert("That's it!"); } }, DoubleClickEvent.getType());
Vous ne pourrez pas accéder à des données de cellules ou de cellules à l'aide de cette manière, telles que l'indice d'indice de ligne ou de colonne.
Ce gestionnaire incendiera si un utilisateur clique sur une cellule, y compris un en-tête ou un espace vide qui n'est pas rempli de rangées. Je ne pense pas que ce soit une bonne idée.
Parce que l'interface CELLPREVIEW ne captive pas de manière native les événements de double clic, vous devez ajouter une logique d'événement dans la méthode de la survolée OnCellPreview. Tout d'abord, vous penseriez que la meilleure façon de vérifier les différences de temps de clic. Cependant, il est beaucoup plus efficace et élégant d'utiliser une machine à états et de compter des clics. Ceci est plus robuste et vous permet de gérer plusieurs cas d'événement, tels que la navigation sur la souris, les simples et les deux clics. Le code est assez simple. Alors, profitez-en! Optimisation: N'hésitez pas à coller le comte, la minuterie et le délai comme des membres de la classe statique ou des membres mondiaux de réutiliser. Vérifiez également si la minuterie est NULL avant de faire une nouvelle instance. J'avais omis cela pour la simplicité. Contrairement à de nombreuses autres techniques de cette façon vous fournit toujours un accès facile et direct à l'événement cellulaire. La technique avec la surcharge de l'abstractcell fonctionne aussi bien, mais parfois, vous n'avez vraiment pas de cellules personnalisées ni de créer une cellule personnalisée pour gérer simplement des événements sur la cellule. P> P>
Integer row=0;// to hold row index Integer column=0;// to hold column index _Grid.addCellPreviewHandler(new CellPreviewEvent.Handler<Model>() { // this is to handle row id @Override public void onCellPreview(final CellPreviewEvent<Model> event) { if (BrowserEvents.CLICK.equalsIgnoreCase(event.getNativeEvent().getType())) { row = event.getIndex(); column=event.getColumn(); } } }); // because Doubleclick handler doesn't give row index or column index we will use addCellPreviewHandler to return row index or column index. _Grid.addDomHandler(new DoubleClickHandler() { @Override public void onDoubleClick(final DoubleClickEvent event) { System.out.println(" You clicked row = " + row); System.out.println(" You clicked column = " + column); } }, DoubleClickEvent.getType());
Dans notre cas, nous suivons déjà le contexte de sélection, ajouter le gestionnaire de cette façon fonctionne très bien et est agréable et non invasif. Et cela fonctionne avec la grille SélectionModels ainsi que surCellPreview.
Pour les listes de cellules, ce code fonctionne bien:
cellList.addDomHandler(new DoubleClickHandler() { @Override public void onDoubleClick(DoubleClickEvent event) { // do the stuff } }, DoubleClickEvent.getType());
laissant cela ici pour une référence future dblclickhikhandlers simplifie simplement les implémentations d'interface de mon choix p> Le truc est de sonner le " DBLCLICK 'Event. P> P>