J'ai une classe VerticalPanel gwt dont j'ai besoin pour gérer les événements KeyDown. la méthode i utilisé pour implémenter gestionnaire de clavier dans ma classe est: i ajouter:Enregistrer KeyDownHandler sur GWT VerticalPanel
this.sinkEvents(Event.ONKEYDOWN);
au constructeur alors i méthode remplacement onBrowserEvent() pour gérer l'événement clé vers le bas.
@Override
public void onBrowserEvent(Event event) {
// TODO Auto-generated method stub
super.onBrowserEvent(event);
int type = DOM.eventGetType(event);
switch (type) {
case Event.ONKEYDOWN:
//call method to handle this keydown event
onKeyDownEvent(event);
break;
default:
return;
}
}
Cependant, cette méthode ne fonctionne pas pour ce VerticalPanel class.no KeyDown événement est déclenché lorsque j'appuie sur une touche!
Il existe des widgets gwt spécifiques qui prennent en charge KeyDownHandler comme Button, etc .. VerticalPanel n'en fait pas partie. Nous avons donc besoin de travailler pour enregistrer un KeyDownHandler sur une classe qui étend VerticalPanel. pouvez-vous suggérer une idée ou un indice?
grâce
oui solution parfaite. En fait, j'ai réalisé que FocusPanel était la solution en enveloppant mon VerticalPanel dans un FocusPanel. Cependant, votre code est très élégant. J'ai aimé l'idée d'écrire un ExtendedVerticalPanel. Merci beaucoup! – othman
De rien. – z00bs
Bonjour, J'ai une autre question: Quand j'inscris keyDownHandler pour mon ExtendedVerticalPanel et que j'utilise les touches Haut/Bas, il fait défiler le défilement de la fenêtre du navigateur tout en tirant des événements de touche haut/bas pour mon Panel. ce comportement n'est pas acceptable. J'ai essayé un correctif en appelant event.stopPropagation() au début de la méthode KeyDownHandler.onKeyDown (KeyDownEvent event). le problème est que la propagation d'événements d'arrêt désactive tous les événements clés pour les widgets dans mon Panel comme TextBox ect .. Comment puis-je empêcher le défilement de la fenêtre du navigateur de défiler tout en utilisant la touche haut/bas sur mon Panel? Merci beaucoup. – othman